diff --git a/src/cell.c b/src/cell.c
index 82be6b6f2109559125ef57e7da284a0354ab2b06..db60b4bb6712e31ee1c8e300a069f732f661cfba 100644
--- a/src/cell.c
+++ b/src/cell.c
@@ -1305,7 +1305,7 @@ int cell_unskip_tasks(struct cell *c, struct scheduler *s) {
         if (l == NULL) error("Missing link to send_xv task.");
         scheduler_activate(s, l->t);
 
-        if (cj->drift)
+        if (cj->drift && t->type == task_type_pair)
           scheduler_activate(s, cj->drift);
         else
           error("Drift task missing !");
@@ -1341,7 +1341,7 @@ int cell_unskip_tasks(struct cell *c, struct scheduler *s) {
         if (l == NULL) error("Missing link to send_xv task.");
         scheduler_activate(s, l->t);
 
-        if (ci->drift)
+        if (ci->drift && t->type == task_type_pair)
           scheduler_activate(s, ci->drift);
         else
           error("Drift task missing !");
diff --git a/src/engine.c b/src/engine.c
index 6bba2b026f8fbc3251920eab587bea7ce3a0a19b..249a092db45c95e8df72d918b9d475e57f457df6 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -2526,7 +2526,7 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
         if (l == NULL) error("Missing link to send_xv task.");
         scheduler_activate(s, l->t);
 
-        if (cj->drift)
+        if (cj->drift && t->type == task_type_pair)
           scheduler_activate(s, cj->drift);
         else
           error("Drift task missing !");
@@ -2562,7 +2562,7 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
         if (l == NULL) error("Missing link to send_xv task.");
         scheduler_activate(s, l->t);
 
-        if (ci->drift)
+        if (ci->drift && t->type == task_type_pair)
           scheduler_activate(s, ci->drift);
         else
           error("Drift task missing !");