diff --git a/src/DynamicModel.cc b/src/DynamicModel.cc
index 345c6e1d0ace5aa23f5017fea4b5a469a1d216ec..2249dcafaa170cfec1a213cc32732a2c832ef6e7 100644
--- a/src/DynamicModel.cc
+++ b/src/DynamicModel.cc
@@ -5339,6 +5339,9 @@ DynamicModel::substituteModelLocalVariables()
   for (auto &equation : equations)
     equation = dynamic_cast<BinaryOpNode *>(equation->substituteModelLocalVariables());
 
+  for (auto &equation : static_only_equations)
+    equation = dynamic_cast<BinaryOpNode *>(equation->substituteModelLocalVariables());
+
   /* We can’t clear local_variables_table at this point, because in case of
      ramsey_policy, the original model is saved via DynamicModel::operator=()
      before computing the FOC. But since DataTree::operator=() clones all