diff --git a/runtime/copper_fcc_lattice.hpp b/runtime/copper_fcc_lattice.hpp
index c883d6534d025e29605048d13a8b74d07c78293a..48fec71f6cdc50a99dd09568d91a8390e38f551c 100644
--- a/runtime/copper_fcc_lattice.hpp
+++ b/runtime/copper_fcc_lattice.hpp
@@ -1,6 +1,5 @@
 #include <iostream>
 #include <math.h>
-#include <mpi.h>
 //---
 #include "pairs.hpp"
 
diff --git a/src/pairs/sim/cell_lists.py b/src/pairs/sim/cell_lists.py
index bf1beec14ae19f9a120a91b02c6c6d1336cc0128..c64e81f455c26ada6b76a9c2a2191d651f702983 100644
--- a/src/pairs/sim/cell_lists.py
+++ b/src/pairs/sim/cell_lists.py
@@ -9,6 +9,7 @@ from pairs.ir.cast import Cast
 from pairs.ir.loops import For, ParticleFor, While
 from pairs.ir.math import Ceil
 from pairs.ir.scalars import ScalarOp
+from pairs.ir.select import Select
 from pairs.ir.types import Types
 from pairs.ir.utils import Print
 from pairs.sim.flags import Flags
@@ -116,8 +117,9 @@ class BuildCellLists(Lowerable):
 
                 index = None
                 for dim in range(self.sim.ndims()):
-                    index = cell_index[dim] if index is None \
-                            else index * dim_ncells[dim] + cell_index[dim]
+                    dcell = Select(self.sim, cell_index[dim] >= 0, cell_index[dim], 0)
+                    dcell = Select(self.sim, dcell < dim_ncells[dim], dcell, dim_ncells[dim] - 1)
+                    index = dcell if index is None else index * dim_ncells[dim] + dcell
 
                 Assign(self.sim, flat_index, index + 1)