diff --git a/hercules_opt/src/forkify.rs b/hercules_opt/src/forkify.rs
index 65ccb586df1609d2d16e840831b81781ed0cc34f..082f1ae958c7c9f90fd4719a17535fc7e604dfdd 100644
--- a/hercules_opt/src/forkify.rs
+++ b/hercules_opt/src/forkify.rs
@@ -349,19 +349,23 @@ pub fn forkify_loop(
             };
             let reduce_id = edit.add_node(reduce);
 
-            if edit.get_schedule(init).contains(&Schedule::ParallelReduce)
-                || edit
-                    .get_schedule(continue_latch)
-                    .contains(&Schedule::ParallelReduce)
+            if (!edit.get_node(init).is_reduce()
+                && edit.get_schedule(init).contains(&Schedule::ParallelReduce))
+                || (!edit.get_node(continue_latch).is_reduce()
+                    && edit
+                        .get_schedule(continue_latch)
+                        .contains(&Schedule::ParallelReduce))
             {
                 edit = edit.add_schedule(reduce_id, Schedule::ParallelReduce)?;
             }
-            if edit
-                .get_schedule(init)
-                .contains(&Schedule::TightAssociative)
-                || edit
-                    .get_schedule(continue_latch)
-                    .contains(&Schedule::TightAssociative)
+            if (!edit.get_node(init).is_reduce()
+                && edit
+                    .get_schedule(init)
+                    .contains(&Schedule::TightAssociative))
+                || (!edit.get_node(continue_latch).is_reduce()
+                    && edit
+                        .get_schedule(continue_latch)
+                        .contains(&Schedule::TightAssociative))
             {
                 edit = edit.add_schedule(reduce_id, Schedule::TightAssociative)?;
             }