diff --git a/src/engine_marktasks.c b/src/engine_marktasks.c
index 953eeec7b268ba55332f465608be3c36d7ff2fd9..68754276e1917de50d2dc1bf80e5fef159041265 100644
--- a/src/engine_marktasks.c
+++ b/src/engine_marktasks.c
@@ -344,18 +344,25 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
         }
       }
 
-      /* Stars density */
-      if (t_subtype == task_subtype_stars_density &&
-          ((ci_active_stars && ci->nodeID == engine_rank) ||
-           (cj_active_stars && cj->nodeID == engine_rank))) {
+      /* Stars density and feedback */
+      const int stars_density = t_subtype == task_subtype_stars_density &&
+	((ci_active_stars && ci->nodeID == engine_rank) ||
+	 (cj_active_stars && cj->nodeID == engine_rank));
+      const int stars_feedback = t_subtype == task_subtype_stars_feedback &&
+	((ci_active_stars && cj->nodeID == engine_rank) ||
+	 (cj_active_stars && ci->nodeID == engine_rank));
+
+      if (stars_density || stars_feedback) {
 
         scheduler_activate(s, t);
 
+	const int should_do = t_subtype == task_subtype_stars_density ||
+	  cj->nodeID != ci->nodeID;
         /* Set the correct sorting flags */
         if (t_type == task_type_pair) {
 
           /* Do ci */
-          if (ci_active_stars) {
+          if (ci_active_stars && should_do) {
             /* Store some values. */
             atomic_or(&cj->hydro.requires_sorts, 1 << t->flags);
             atomic_or(&ci->stars.requires_sorts, 1 << t->flags);
@@ -375,7 +382,7 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
           }
 
           /* Do cj */
-          if (cj_active_stars) {
+          if (cj_active_stars && should_do) {
             /* Store some values. */
             atomic_or(&ci->hydro.requires_sorts, 1 << t->flags);
             atomic_or(&cj->stars.requires_sorts, 1 << t->flags);
@@ -395,19 +402,11 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
         }
 
         /* Store current values of dx_max and h_max. */
-        else if (t_type == task_type_sub_pair) {
+        else if (t_type == task_type_sub_pair && should_do) {
           cell_activate_subcell_stars_tasks(t->ci, t->cj, s);
         }
       }
 
-      /* Stars feedback */
-      if (t_subtype == task_subtype_stars_feedback &&
-          ((ci_active_stars && ci->nodeID == engine_rank) ||
-           (cj_active_stars && cj->nodeID == engine_rank))) {
-
-        scheduler_activate(s, t);
-      }
-
       /* Gravity */
       if ((t_subtype == task_subtype_grav) &&
           ((ci_active_gravity && ci_nodeID == nodeID) ||