diff --git a/src/DynamicModel.cc b/src/DynamicModel.cc
index fb84ffcb9110c92d708e54955134929903c4a7b6..0b7cc063d893f9c26b5091dda63d9fa906632278 100644
--- a/src/DynamicModel.cc
+++ b/src/DynamicModel.cc
@@ -4067,7 +4067,8 @@ DynamicModel::declarePacModelConsistentExpectationEndogs(const string &name)
 void
 DynamicModel::addPacModelConsistentExpectationEquation(const string &name, int discount_symb_id,
                                                        const map<pair<string, string>, pair<string, int>> &eqtag_and_lag,
-                                                       ExprNode::subst_table_t &diff_subst_table)
+                                                       ExprNode::subst_table_t &diff_subst_table,
+                                                       expr_t growth)
 {
   int pac_target_symb_id;
   try
@@ -4190,7 +4191,11 @@ DynamicModel::addPacModelConsistentExpectationEquation(const string &name, int d
                             AddMinus(AddTimes(A, AddMinus(const_cast<VariableNode *>(target_base_diff_node), fs)), fp));
       addEquation(neweq, -1);
       neqs++;
-      pac_expectation_substitution[{name, eqtag}] = AddVariable(mce_z1_symb_id);
+      /* The growth correction term is not added to the definition of Z₁
+         because the latter is recursive. Rather put it at the level of the
+         substition of pac_expectation operator. */
+      expr_t growth_correction = growth ? AddTimes(AddVariable(pac_growth_neutrality_params.at(name)), growth) : Zero;
+      pac_expectation_substitution[{name, eqtag}] = AddPlus(AddVariable(mce_z1_symb_id), growth_correction);
     }
   cout << "Pac Model Consistent Expectation: added " << neqs << " auxiliary variables and equations for model " << name << "." << endl;
 }
diff --git a/src/DynamicModel.hh b/src/DynamicModel.hh
index 7b97e8d474e5780311083736af63cb6cc47e73a2..ee08a698d7d51d8ded6d1814362af52834695fed 100644
--- a/src/DynamicModel.hh
+++ b/src/DynamicModel.hh
@@ -582,7 +582,7 @@ public:
   //! Add model consistent expectation equation for pac model
   void addPacModelConsistentExpectationEquation(const string &name, int discount,
                                                 const map<pair<string, string>, pair<string, int>> &eqtag_and_lag,
-                                                ExprNode::subst_table_t &diff_subst_table);
+                                                ExprNode::subst_table_t &diff_subst_table, expr_t growth);
 
   //! Table to undiff LHS variables for pac vector z
   vector<int> getUndiffLHSForPac(const string &aux_model_name,
diff --git a/src/ModFile.cc b/src/ModFile.cc
index 4cd14be50afe3bbdbd117c772e9d06d29b27872c..511f29c018f3368b512bbfca10d27e7c36c70a57 100644
--- a/src/ModFile.cc
+++ b/src/ModFile.cc
@@ -490,7 +490,8 @@ ModFile::transformPass(bool nostrict, bool stochastic, bool compute_xrefs, bool
         auto eqtag_and_lag = dynamic_model.walkPacParameters(pms->name);
         if (pms->aux_model_name.empty())
           dynamic_model.addPacModelConsistentExpectationEquation(pms->name, symbol_table.getID(pms->discount),
-                                                                 eqtag_and_lag, diff_subst_table);
+                                                                 eqtag_and_lag, diff_subst_table,
+                                                                 pms->growth);
         else
           dynamic_model.fillPacModelInfo(pms->name, lhs, max_lag, aux_model_type,
                                          eqtag_and_lag, nonstationary, pms->growth);