diff --git a/DynamicModel.cc b/DynamicModel.cc
index 18024f2cfadae1181a97f5b33fabf13089a83212..a7aa4dd02c2df63ea904333c4cb72ae1bb3536b9 100644
--- a/DynamicModel.cc
+++ b/DynamicModel.cc
@@ -2664,23 +2664,24 @@ DynamicModel::writeOutput(ostream &output, const string &basename, bool block_de
              (julia ? "false" : "0"))
          << ";" << endl;
 
+  vector<int> state_var;
+  for (int endoID = 0; endoID < symbol_table.endo_nbr(); endoID++)
+    // Loop on periods
+    for (int lag = -max_endo_lag; lag < 0; lag++)
+      try
+        {
+          getDerivID(symbol_table.getID(eEndogenous, variable_reordered[endoID]), lag);
+          if (lag < 0 && find(state_var.begin(), state_var.end(), variable_reordered[endoID]+1) == state_var.end())
+            state_var.push_back(variable_reordered[endoID]+1);
+        }
+      catch (UnknownDerivIDException &e)
+        {
+        }
+
   //In case of sparse model, writes the block_decomposition structure of the model
   if (block_decomposition)
     {
-      vector<int> state_var, state_equ;
-      for (int endoID = 0; endoID < symbol_table.endo_nbr(); endoID++)
-        // Loop on periods
-        for (int lag = -max_endo_lag; lag < 0; lag++)
-          try
-            {
-              getDerivID(symbol_table.getID(eEndogenous, variable_reordered[endoID]), lag);
-              if (lag < 0 && find(state_var.begin(), state_var.end(), variable_reordered[endoID]+1) == state_var.end())
-                state_var.push_back(variable_reordered[endoID]+1);
-            }
-          catch (UnknownDerivIDException &e)
-            {
-            }
-
+      vector<int> state_equ;
       int count_lead_lag_incidence = 0;
       int max_lead, max_lag, max_lag_endo, max_lead_endo, max_lag_exo, max_lead_exo, max_lag_exo_det, max_lead_exo_det;
       unsigned int nb_blocks = getNbBlocks();
@@ -3098,13 +3099,13 @@ DynamicModel::writeOutput(ostream &output, const string &basename, bool block_de
             KF_index_file.write(reinterpret_cast<char *>(&(*it)), sizeof(index_KF));
           KF_index_file.close();
         }
-      output << modstruct << "state_var = [";
-
-      for (vector<int>::const_iterator it = state_var.begin(); it != state_var.end(); it++)
-        output << *it << " ";
-      output << "];" << endl;
     }
 
+  output << modstruct << "state_var = [";
+  for (vector<int>::const_iterator it=state_var.begin(); it != state_var.end(); it++)
+    output << *it << " ";
+  output << "];" << endl;
+
   // Writing initialization for some other variables
   if (!julia)
     output << modstruct << "exo_names_orig_ord = [1:" << symbol_table.exo_nbr() << "];" << endl;