diff --git a/src/engine.c b/src/engine.c
index 5178de914e7770cb3d23c2bb04381bdbfa64e0ff..e9e3f15c2eb3f37a777e3652f564bd97a3a18a53 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -2666,7 +2666,7 @@ void engine_init_particles(struct engine *e, int flag_entropy_ICs) {
   clocks_gettime(&time2);
 
   /* Ready to go */
-  e->step = -1;
+  e->step = 0;
   e->forcerebuild = 1;
   e->wallclock_time = (float)clocks_diff(&time1, &time2);
 
diff --git a/src/scheduler.c b/src/scheduler.c
index 18c66133633750874b7f41c7f28ab447db1db096..c2fe4126ce170c5f27c9edef4e38278b6ae4efe7 100644
--- a/src/scheduler.c
+++ b/src/scheduler.c
@@ -135,6 +135,7 @@ static void scheduler_splittask(struct task *t, struct scheduler *s) {
         ((t->type == task_type_kick1) && t->ci->nodeID != s->nodeID) ||
         ((t->type == task_type_kick2) && t->ci->nodeID != s->nodeID) ||
         ((t->type == task_type_drift) && t->ci->nodeID != s->nodeID) ||
+        ((t->type == task_type_timestep) && t->ci->nodeID != s->nodeID) ||
         ((t->type == task_type_init) && t->ci->nodeID != s->nodeID)) {
       t->type = task_type_none;
       t->skip = 1;
@@ -964,12 +965,18 @@ void scheduler_reweight(struct scheduler *s, int verbose) {
       case task_type_ghost:
         if (t->ci == t->ci->super) cost = wscale * t->ci->count;
         break;
+      case task_type_drift:
+        cost = wscale * t->ci->count;
+        break;
       case task_type_kick1:
         cost = wscale * t->ci->count;
         break;
       case task_type_kick2:
         cost = wscale * t->ci->count;
         break;
+      case task_type_timestep:
+        cost = wscale * t->ci->count;
+        break;
       case task_type_init:
         cost = wscale * t->ci->count;
         break;
@@ -1165,6 +1172,7 @@ void scheduler_enqueue(struct scheduler *s, struct task *t) {
       case task_type_kick1:
       case task_type_kick2:
       case task_type_drift:
+      case task_type_timestep:
       case task_type_init:
         qid = t->ci->super->owner;
         break;