diff --git a/src/cell.h b/src/cell.h
index f86ab765e75052c9231fdfebe225da0a5c72be68..97fb0d1a985013e0245ad57fd617f7a6b80f6f13 100644
--- a/src/cell.h
+++ b/src/cell.h
@@ -216,6 +216,9 @@ struct cell {
 #define cell_getid(cdim, i, j, k) \
   ((int)(k) + (cdim)[2] * ((int)(j) + (cdim)[1] * (int)(i)))
 
+#define cell_getid2(cdim_x, cdim_y, cdim_z, i, j, k) \
+  ((int)(k) + cdim_z * ((int)(j) + cdim_y * (int)(i)))
+
 /* Function prototypes. */
 void cell_split(struct cell *c, ptrdiff_t parts_offset);
 void cell_sanitize(struct cell *c);
diff --git a/src/space.c b/src/space.c
index 1a323fdae213b94b3cdbc6b16ab59935402bf632..516350c5af42920c1bc8e934baa306c4082be10e 100644
--- a/src/space.c
+++ b/src/space.c
@@ -750,31 +750,42 @@ void space_parts_get_cell_index_mapper(void *map_data, int nr_parts,
   struct part *restrict parts = (struct part *)map_data;
   struct index_data *data = (struct index_data *)extra_data;
   struct space *s = data->s;
-  int *ind = data->ind + (ptrdiff_t)(parts - s->parts);
-  // struct cell *cells = data->cells;
+  int *const ind = data->ind + (ptrdiff_t)(parts - s->parts);
 
   /* Get some constants */
-  const double dim[3] = {s->dim[0], s->dim[1], s->dim[2]};
-  const int cdim[3] = {s->cdim[0], s->cdim[1], s->cdim[2]};
-  const double ih[3] = {s->iwidth[0], s->iwidth[1], s->iwidth[2]};
+  const double dim_x = s->dim[0];
+  const double dim_y = s->dim[1];
+  const double dim_z = s->dim[2];
+  // const int cdim_x = s->cdim[0];
+  const int cdim_y = s->cdim[1];
+  const int cdim_z = s->cdim[2];
+  const double ih_x = s->iwidth[0];
+  const double ih_y = s->iwidth[1];
+  const double ih_z = s->iwidth[2];
 
   for (int k = 0; k < nr_parts; k++) {
 
     /* Get the particle */
     struct part *restrict p = &parts[k];
 
+    const double old_pos_x = p->x[0];
+    const double old_pos_y = p->x[1];
+    const double old_pos_z = p->x[2];
+
     /* Put it back into the simulation volume */
-    p->x[0] = box_wrap(p->x[0], 0.0, dim[0]);
-    p->x[1] = box_wrap(p->x[1], 0.0, dim[1]);
-    p->x[2] = box_wrap(p->x[2], 0.0, dim[2]);
+    const double pos_x = box_wrap(old_pos_x, 0.0, dim_x);
+    const double pos_y = box_wrap(old_pos_y, 0.0, dim_y);
+    const double pos_z = box_wrap(old_pos_z, 0.0, dim_z);
 
     /* Get its cell index */
-    const int index =
-        cell_getid(cdim, p->x[0] * ih[0], p->x[1] * ih[1], p->x[2] * ih[2]);
+    const int index = cell_getid2(0., cdim_y, cdim_z, pos_x * ih_x,
+                                  pos_y * ih_y, pos_z * ih_z);
     ind[k] = index;
 
-    /* Tell the cell it has a new member */
-    // atomic_inc(&(cells[index].count));
+    /* Update the position */
+    p->x[0] = pos_x;
+    p->x[1] = pos_y;
+    p->x[2] = pos_z;
   }
 }
 
@@ -792,8 +803,7 @@ void space_gparts_get_cell_index_mapper(void *map_data, int nr_gparts,
   struct gpart *restrict gparts = (struct gpart *)map_data;
   struct index_data *data = (struct index_data *)extra_data;
   struct space *s = data->s;
-  int *ind = data->ind + (ptrdiff_t)(gparts - s->gparts);
-  // struct cell *cells = data->cells;
+  int *const ind = data->ind + (ptrdiff_t)(gparts - s->gparts);
 
   /* Get some constants */
   const double dim[3] = {s->dim[0], s->dim[1], s->dim[2]};
@@ -814,9 +824,6 @@ void space_gparts_get_cell_index_mapper(void *map_data, int nr_gparts,
     const int index =
         cell_getid(cdim, gp->x[0] * ih[0], gp->x[1] * ih[1], gp->x[2] * ih[2]);
     ind[k] = index;
-
-    /* Tell the cell it has a new member */
-    // atomic_inc(&(cells[index].gcount));
   }
 }