diff --git a/src/engine.c b/src/engine.c
index 6e028ce4a2126cac330f059f0ebf02aab42f17a3..574383e3890821db4c189d8cc3b6ad155c8f0d1c 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -1381,7 +1381,6 @@ void engine_count_and_link_tasks(struct engine *e) {
     if (t->type == task_type_sort && t->ci->split)
       for (int j = 0; j < 8; j++)
         if (t->ci->progeny[j] != NULL && t->ci->progeny[j]->sorts != NULL) {
-          t->ci->progeny[j]->sorts->skip = 0;
           scheduler_addunlock(sched, t->ci->progeny[j]->sorts, t);
         }
 
@@ -2151,13 +2150,13 @@ int engine_marktasks(struct engine *e) {
 
     /* Multiple-timestep case */
   } else {
-
+  
     /* Run through the tasks and mark as skip or not. */
     size_t extra_data[3] = {e->ti_current, rebuild_space, (size_t)&e->sched};
-    scheduler_clear_active(&e->sched);
     threadpool_map(&e->threadpool, engine_marktasks_mapper, s->tasks,
                    s->nr_tasks, sizeof(struct task), 10000, extra_data);
     rebuild_space = extra_data[1];
+    message("scheduler active tasks: %i", e->sched.active_count);
   }
 
   if (e->verbose)
diff --git a/src/scheduler.c b/src/scheduler.c
index 8a84d1268008f87aff92a907f69196a1fa527a4b..c58db502cd98017e9f32daabf1f37e500af32d98 100644
--- a/src/scheduler.c
+++ b/src/scheduler.c
@@ -1119,6 +1119,9 @@ void scheduler_start(struct scheduler *s, unsigned int mask,
       pthread_cond_signal(&s->sleep_cond);
     }
   }
+  
+  /* Clear the list of active tasks. */
+  s->active_count = 0;
 
   /* To be safe, fire of one last sleep_cond in a safe way. */
   pthread_mutex_lock(&s->sleep_mutex);