diff --git a/b_asic/scheduler.py b/b_asic/scheduler.py
index 78e1409070b271ec989976ca95aeb371cd4201c0..33e3a5d8bb9053fbae2467f06b6ffa8b7d7cdb1b 100644
--- a/b_asic/scheduler.py
+++ b/b_asic/scheduler.py
@@ -1082,6 +1082,9 @@ class RecursiveListScheduler(ListScheduler):
                     self._schedule._start_times[op_id] -= slack
                 self._schedule._schedule_time = self._schedule._schedule_time - slack
 
+                if self._schedule._schedule_time <= time_goal:
+                    break
+
             time_out_counter -= 1
 
     def _schedule_recursive_ops(self, loops: list[list["GraphID"]]) -> None:
@@ -1125,7 +1128,7 @@ class RecursiveListScheduler(ListScheduler):
             self._remaining_ops_set.remove(op.graph_id)
 
             for i in range(max(1, cast(int, op.execution_time))):
-                time_slot = self._current_time + i
+                time_slot = op_sched_time + i
                 self._cached_execution_times_in_time[op_type][time_slot] += 1
 
             prio_table = self._get_recursive_priority_table()