diff --git a/src/ModelTree.cc b/src/ModelTree.cc
index c5fa0363844db02dee6e46440d1ec991102906d9..37ebf56c2ac3d1adb2f58eda86355aef3172fc33 100644
--- a/src/ModelTree.cc
+++ b/src/ModelTree.cc
@@ -754,30 +754,31 @@ ModelTree::computeBlockDecompositionAndFeedbackVariablesForEachBlock()
       auto subG = G.extractSubgraph(eqs_in_simblock[i]);
       auto feed_back_vertices = subG.minimalSetOfFeedbackVertices();
       blocks[prologue+i].mfs_size = feed_back_vertices.size();
-      auto reordered_vertices = subG.reorderRecursiveVariables(feed_back_vertices);
+      auto recursive_vertices = subG.reorderRecursiveVariables(feed_back_vertices);
+      auto v_index1 = get(boost::vertex_index1, subG);
 
       const vector<pair<int, int>> dynamic_order{ make_pair(0, 0), make_pair(1, 0),
                                                   make_pair(1, 1), make_pair(0, 1) };
 
       // First the recursive equations conditional on feedback variables
       for (auto max_lag_lead : dynamic_order)
-        for (int its : reordered_vertices)
-            if (variable_lag_lead[old_endo_idx_block2orig[its+prologue]] == max_lag_lead)
-              {
-                eq_idx_block2orig[ordidx] = old_eq_idx_block2orig[its+prologue];
-                endo_idx_block2orig[ordidx] = old_endo_idx_block2orig[its+prologue];
-                ordidx++;
-              }
+        for (int vtx : recursive_vertices)
+          if (int simvar = v_index1[vertex(vtx, subG)];
+              variable_lag_lead[old_endo_idx_block2orig[simvar+prologue]] == max_lag_lead)
+            {
+              eq_idx_block2orig[ordidx] = old_eq_idx_block2orig[simvar+prologue];
+              endo_idx_block2orig[ordidx] = old_endo_idx_block2orig[simvar+prologue];
+              ordidx++;
+            }
 
       // Then the equations related to the feedback variables
-      auto v_index1 = get(boost::vertex_index1, subG);
       for (auto max_lag_lead : dynamic_order)
-        for (int fbvertex : feed_back_vertices)
-          if (int idx = v_index1[vertex(fbvertex, subG)];
-              variable_lag_lead[old_endo_idx_block2orig[idx+prologue]] == max_lag_lead)
+        for (int vtx : feed_back_vertices)
+          if (int simvar = v_index1[vertex(vtx, subG)];
+              variable_lag_lead[old_endo_idx_block2orig[simvar+prologue]] == max_lag_lead)
             {
-              eq_idx_block2orig[ordidx] = old_eq_idx_block2orig[idx+prologue];
-              endo_idx_block2orig[ordidx] = old_endo_idx_block2orig[idx+prologue];
+              eq_idx_block2orig[ordidx] = old_eq_idx_block2orig[simvar+prologue];
+              endo_idx_block2orig[ordidx] = old_endo_idx_block2orig[simvar+prologue];
               ordidx++;
             }
     }
diff --git a/src/VariableDependencyGraph.cc b/src/VariableDependencyGraph.cc
index 8e34be4e061892bdf66c84ba17f72dd65cc747a9..4bd91a2740f2c450eb3af370ab8348b7167cdc2d 100644
--- a/src/VariableDependencyGraph.cc
+++ b/src/VariableDependencyGraph.cc
@@ -318,7 +318,7 @@ VariableDependencyGraph::reorderRecursiveVariables(const set<int> &feedback_vert
 {
   vector<int> reordered_vertices;
   VariableDependencyGraph G(*this);
-  auto v_index = get(vertex_index1, G);
+  auto v_index = get(vertex_index, G);
 
   // Suppress feedback vertices, in decreasing order
   for (auto it = feedback_vertices.rbegin(); it != feedback_vertices.rend(); ++it)