diff --git a/src/scheduler.c b/src/scheduler.c
index 298dcc2b3d3cb36457d5b76853fbbea12392beed..d97fd65fe498d435d842380d88ece6d9a65ef63f 100644
--- a/src/scheduler.c
+++ b/src/scheduler.c
@@ -634,7 +634,7 @@ static void scheduler_splittask(struct task *t, struct scheduler *s) {
 
         /* Create the drift and sort for ci. */
         lock_lock(&ci->lock);
-        if (ci->drift == NULL)
+        if (ci->drift == NULL && ci->nodeID == engine_rank)
           ci->drift = scheduler_addtask(s, task_type_drift, task_subtype_none,
                                         0, 0, ci, NULL, 0);
         if (ci->sorts == NULL)
@@ -647,7 +647,7 @@ static void scheduler_splittask(struct task *t, struct scheduler *s) {
 
         /* Create the sort for cj. */
         lock_lock(&cj->lock);
-        if (cj->drift == NULL)
+        if (cj->drift == NULL && cj->nodeID == engine_rank)
           cj->drift = scheduler_addtask(s, task_type_drift, task_subtype_none,
                                         0, 0, cj, NULL, 0);
         if (cj->sorts == NULL)