diff --git a/src/cell.c b/src/cell.c
index 9b1ab4f50f70f68c134161f36a9ad4a01e602d91..47e4f8bcafa7353b6d5f46c28d1ee14953716f84 100644
--- a/src/cell.c
+++ b/src/cell.c
@@ -1681,8 +1681,8 @@ int cell_unskip_tasks(struct cell *c, struct scheduler *s) {
       cj->dx_max_sort_old = cj->dx_max_sort;
 
       /* Activate the drift tasks. */
-      cell_activate_drift_part(ci, s);
-      cell_activate_drift_part(cj, s);
+      if (ci->nodeID == engine_rank) cell_activate_drift_part(ci, s);
+      if (cj->nodeID == engine_rank) cell_activate_drift_part(cj, s);
 
       /* Check the sorts and activate them if needed. */
       cell_activate_sorts(ci, t->flags, s);
diff --git a/src/engine.c b/src/engine.c
index 441b09f44e84f1381372f8c47a7e09e319af3446..8bc40f293e8a5437238adea9bc92568665f1d8e4 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -2578,8 +2578,8 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
         cj->dx_max_sort_old = cj->dx_max_sort;
 
         /* Activate the drift tasks. */
-        cell_activate_drift_part(ci, s);
-        cell_activate_drift_part(cj, s);
+        if (ci->nodeID == engine_rank) cell_activate_drift_part(ci, s);
+        if (cj->nodeID == engine_rank) cell_activate_drift_part(cj, s);
 
         /* Activate the sorts where needed. */
         cell_activate_sorts(ci, t->flags, s);