diff --git a/matlab/resid.m b/matlab/resid.m
index 75148e3586c5d8aca4441389f5561bfd0898981f..23a59e13e1cec785959e44c822267dc729dadc80 100644
--- a/matlab/resid.m
+++ b/matlab/resid.m
@@ -72,11 +72,7 @@ if options_.block && ~options_.bytecode
                                      oo_.steady_state,...
                                      [oo_.exo_steady_state; ...
                             oo_.exo_det_steady_state], M_.params);
-        if isempty(M_.blocksMFS{i})
-            idx = var_indx;
-        else
-            idx = M_.blocksMFS{i};
-        end
+        idx = M_.blocksEQU{i};
         z(idx) = r;
     end
 elseif options_.bytecode
diff --git a/preprocessor/StaticModel.cc b/preprocessor/StaticModel.cc
index c3f8db068a9c8063a9b0b848c844d708c6150c86..f2870a67ae714586cc98d0de592295e9f0717e1e 100644
--- a/preprocessor/StaticModel.cc
+++ b/preprocessor/StaticModel.cc
@@ -1502,6 +1502,15 @@ StaticModel::writeOutput(ostream &output, bool block) const
 
       output << "];" << endl;
     }
+  output << "M_.blocksEQU = cell(" << nb_blocks << ", 1);" << endl;
+  for (int b = 0; b < (int) nb_blocks; b++)
+    {
+      unsigned int block_size = getBlockSize(b);
+      output << "M_.blocksEQU{" << b+1 << "} = [ ";
+      for (int i = 0; i < (int) block_size; i++)
+         output << getBlockEquationID(b, i)+1 << "; ";
+      output << "];" << endl;
+    }
 }
 
 SymbolType