diff --git a/src/cell.c b/src/cell.c
index 82bc26926524b9e8b7ded41ec579d7596d019261..5c1de13bcd669087f81fa75b0a65decbb5ec803f 100644
--- a/src/cell.c
+++ b/src/cell.c
@@ -1305,10 +1305,12 @@ 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);
 
+        /* Drift both cells, the foreign one at the level which it is sent. */
         if (l->t->ci->drift)
           scheduler_activate(s, l->t->ci->drift);
         else
           error("Drift task missing !");
+        scheduler_activate(s, cj->drift);
 
         if (cell_is_active(cj, e)) {
           for (l = cj->send_rho; l != NULL && l->t->cj->nodeID != ci->nodeID;
@@ -1341,10 +1343,12 @@ 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);
 
+        /* Drift both cells, the foreign one at the level which it is sent. */
         if (l->t->ci->drift)
           scheduler_activate(s, l->t->ci->drift);
         else
           error("Drift task missing !");
+        scheduler_activate(s, ci->drift);
 
         if (cell_is_active(ci, e)) {
           for (l = ci->send_rho; l != NULL && l->t->cj->nodeID != cj->nodeID;
diff --git a/src/engine.c b/src/engine.c
index 687093cace1c8b60e8abe02233adea86d18defb4..128d445b58a47dfcd34f00aa4c630d268a0e384a 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -2528,10 +2528,12 @@ 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);
 
+        /* Drift both cells, the foreign one at the level which it is sent. */
         if (l->t->ci->drift)
           scheduler_activate(s, l->t->ci->drift);
         else
           error("Drift task missing !");
+        scheduler_activate(s, cj->drift);
 
         if (cell_is_active(cj, e)) {
           for (l = cj->send_rho; l != NULL && l->t->cj->nodeID != ci->nodeID;
@@ -2564,10 +2566,12 @@ 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);
 
+        /* Drift both cells, the foreign one at the level which it is sent. */
         if (l->t->ci->drift)
           scheduler_activate(s, l->t->ci->drift);
         else
           error("Drift task missing !");
+        scheduler_activate(s, ci->drift);
 
         if (cell_is_active(ci, e)) {
           for (l = ci->send_rho; l != NULL && l->t->cj->nodeID != cj->nodeID;