diff --git a/preprocessor/DynamicModel.cc b/preprocessor/DynamicModel.cc
index 2d53e19aa00b9ed03ecb192be8ca671337ec537d..38aff37b63d96450b2c7f868954b10cbc62f5a5f 100644
--- a/preprocessor/DynamicModel.cc
+++ b/preprocessor/DynamicModel.cc
@@ -3681,7 +3681,7 @@ DynamicModel::toStatic(StaticModel &static_model) const
 
   // Convert equations
   int static_only_index = 0;
-  for (int i = 0; i < (int) equations.size(); i++)
+  for (int i = 0; i < (int) equations.size() - aux_equations.size(); i++)
     {
       // Detect if equation is marked [dynamic]
       bool is_dynamic_only = false;
@@ -3698,11 +3698,11 @@ DynamicModel::toStatic(StaticModel &static_model) const
           // If yes, replace it by an equation marked [static]
           if (is_dynamic_only)
             {
-              static_model.addEquation(static_only_equations[static_only_index]->toStatic(static_model), static_only_equations_lineno[static_only_index]);
+              static_model.addEquation(static_only_equations[static_only_index]->substituteStaticAuxiliaryVariable()->toStatic(static_model), static_only_equations_lineno[static_only_index]);
               static_only_index++;
             }
           else
-            static_model.addEquation(equations[i]->toStatic(static_model), equations_lineno[i]);
+            static_model.addEquation(equations[i]->substituteStaticAuxiliaryVariable()->toStatic(static_model), equations_lineno[i]);
         }
       catch (DataTree::DivisionByZeroException)
         {
@@ -3710,11 +3710,6 @@ DynamicModel::toStatic(StaticModel &static_model) const
           exit(EXIT_FAILURE);
         }
     }
-
-  // Convert auxiliary equations
-  for (deque<BinaryOpNode *>::const_iterator it = aux_equations.begin();
-       it != aux_equations.end(); it++)
-    static_model.addAuxEquation((*it)->toStatic(static_model));
 }
 
 bool
diff --git a/preprocessor/StaticModel.cc b/preprocessor/StaticModel.cc
index d43c09a85aa8efef288570f08b4ec853ba13b70d..f0e688a6ab643827b1fc52b909a05a5abab9fdc1 100644
--- a/preprocessor/StaticModel.cc
+++ b/preprocessor/StaticModel.cc
@@ -1050,22 +1050,6 @@ void
 StaticModel::computingPass(const eval_context_t &eval_context, bool no_tmp_terms, bool hessian, bool thirdDerivatives, int paramsDerivsOrder, bool block, bool bytecode)
 {
   initializeVariablesAndEquations();
-
-  vector<BinaryOpNode *> neweqs;
-  for (unsigned int eq = 0; eq < equations.size() - aux_equations.size(); eq++)
-    {
-      expr_t eq_tmp = equations[eq]->substituteStaticAuxiliaryVariable();
-      neweqs.push_back(dynamic_cast<BinaryOpNode *>(eq_tmp->toStatic(*this)));
-    }
-
-  for (unsigned int eq = 0; eq < aux_equations.size();  eq++)
-    {
-      expr_t eq_tmp = aux_equations[eq]->substituteStaticAuxiliaryDefinition();
-      neweqs.push_back(dynamic_cast<BinaryOpNode *>(eq_tmp->toStatic(*this)));
-    }
-      
-  equations.clear();
-  copy(neweqs.begin(),neweqs.end(),back_inserter(equations));
   // Compute derivatives w.r. to all endogenous, and possibly exogenous and exogenous deterministic
   set<int> vars;