diff --git a/src/space.c b/src/space.c
index 5f76055f5e2ee8926aace22b24c771196c4f557d..8c66227180dadd9071a73819b90d9ba6892d9939 100644
--- a/src/space.c
+++ b/src/space.c
@@ -1253,7 +1253,9 @@ void space_split_mapper(void *map_data, int num_elements, void *extra_data) {
     struct xpart *xparts = c->xparts;
 
     /* Check the depth. */
-    if (c->depth > s->maxdepth) s->maxdepth = c->depth;
+    while (c->depth > (maxdepth = s->maxdepth)) {
+      atomic_cas(&s->maxdepth, maxdepth, c->depth);
+    }
 
     /* Split or let it be? */
     if (count > space_splitsize || gcount > space_splitsize) {