diff --git a/src/task.c b/src/task.c
index 964c77feafe39bf250da243c76381ef2ce3ebd13..4403f102968da2bb6a23082898fced1959ceadb7 100644
--- a/src/task.c
+++ b/src/task.c
@@ -468,7 +468,8 @@ void task_unlock(struct task *t) {
         cell_unlocktree(ci);
       } else if (subtype == task_subtype_do_bh_swallow) {
         cell_bunlocktree(ci);
-      } else {
+      } else if (subtype == task_subtype_limiter) {
+      } else { /* hydro */
         cell_unlocktree(ci);
       }
       break;
@@ -493,7 +494,8 @@ void task_unlock(struct task *t) {
       } else if (subtype == task_subtype_do_bh_swallow) {
         cell_bunlocktree(ci);
         cell_bunlocktree(cj);
-      } else {
+      } else if (subtype == task_subtype_limiter) {
+      } else { /* hydro */
         cell_unlocktree(ci);
         cell_unlocktree(cj);
       }
@@ -625,6 +627,8 @@ int task_lock(struct task *t) {
       } else if (subtype == task_subtype_do_bh_swallow) {
         if (ci->black_holes.hold) return 0;
         if (cell_blocktree(ci) != 0) return 0;
+      } else if (subtype == task_subtype_limiter) {
+        return 1;
       } else { /* subtype == hydro */
         if (ci->hydro.hold) return 0;
         if (cell_locktree(ci) != 0) return 0;
@@ -686,6 +690,8 @@ int task_lock(struct task *t) {
           cell_bunlocktree(ci);
           return 0;
         }
+      } else if (subtype == task_subtype_limiter) {
+        return 1;
       } else { /* subtype == hydro */
         /* Lock the parts in both cells */
         if (ci->hydro.hold || cj->hydro.hold) return 0;
diff --git a/src/timestep_limiter_iact.h b/src/timestep_limiter_iact.h
index a4f5c7c1af48db7f6926f0fac1c09a4db2a0c492..8c8fa7cee693036f509dd501d240d692d86f7b61 100644
--- a/src/timestep_limiter_iact.h
+++ b/src/timestep_limiter_iact.h
@@ -88,7 +88,7 @@ __attribute__((always_inline)) INLINE static void runner_iact_nonsym_limiter(
   if (pj->time_bin > pi->time_bin + time_bin_neighbour_max_delta_bin) {
 
     /* Store the smallest time bin that woke up this particle */
-    pj->limiter_data.wakeup = max(pj->limiter_data.wakeup, -pi->time_bin);
+    atomic_max_c(&pj->limiter_data.wakeup, -pi->time_bin);
   }
 }