diff --git a/src/ModFile.cc b/src/ModFile.cc
index 1feca9efac6ea6c3d9345ec8d50be5c80c98e300..1eed44bb5a372eb10bbef0e9b7a56595877ce75e 100644
--- a/src/ModFile.cc
+++ b/src/ModFile.cc
@@ -397,21 +397,11 @@ ModFile::transformPass(bool nostrict, bool stochastic, bool compute_xrefs, const
        DataTree:AddDiff()
   */
   dynamic_model.simplifyEquations();
-  for (auto & statement : statements)
-    {
-      auto pms = dynamic_cast<PacModelStatement *>(statement.get());
-      if (pms != nullptr)
-        {
-          if (pms->growth != nullptr)
-            pac_growth.push_back(pms->growth);
-          if (pms->aux_model_name == "")
-            dynamic_model.declarePacModelConsistentExpectationEndogs(pms->name);
-        }
-    }
   dynamic_model.substituteAdl();
   dynamic_model.setLeadsLagsOrig();
   original_model = dynamic_model;
 
+  // Check that all declared endogenous are used in equations
   set<int> unusedEndogs = dynamic_model.findUnusedEndogenous();
   bool unusedEndogsIsErr = !nostrict && !mod_file_struct.bvar_present && unusedEndogs.size();
   for (int unusedEndog : unusedEndogs)
@@ -427,6 +417,19 @@ ModFile::transformPass(bool nostrict, bool stochastic, bool compute_xrefs, const
   if (unusedEndogsIsErr)
     exit(EXIT_FAILURE);
 
+  // Declare endogenous used for PAC model-consistent expectations
+  for (auto & statement : statements)
+    {
+      auto pms = dynamic_cast<PacModelStatement *>(statement.get());
+      if (pms != nullptr)
+        {
+          if (pms->growth != nullptr)
+            pac_growth.push_back(pms->growth);
+          if (pms->aux_model_name == "")
+            dynamic_model.declarePacModelConsistentExpectationEndogs(pms->name);
+        }
+    }
+
   // Get all equation tags associated with VARs and Trend Component Models
   set<string> eqtags;
   for (auto const & it : trend_component_model_table.getEqTags())