diff --git a/src/DynamicModel.cc b/src/DynamicModel.cc
index 2c034b554e51700b9ae47cb26650bb63e6251fd5..d50ee73f431b6441fab83937aa17c0f4768d9412 100644
--- a/src/DynamicModel.cc
+++ b/src/DynamicModel.cc
@@ -5677,6 +5677,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