associate an independent copy, or replica, of the system to each cell $B_\alpha$. Let us denote the instantaneous position of these replicas by $\zz_\alpha(t)\in B_\alpha$, $\alpha=1,\ldots, \Lambda$. Even if we start $\zz_\alpha(t)$ inside $B_\alpha$, sooner or later this trajectory will try to exit $B_\alpha$ and go to another cell. When this happens, we store the exit point on the boundary, put the trajectory on hold and wait until a trajectory in one of the neighboring cells makes an attempt to exit this cell by crossing the boundary with $B_\alpha$. We then take this crossing point and use it to reinitialize the trajectory in $B_\alpha$. This is illustrated in Fig. \[fig:voronoi\]. At the beginning of the simulation we do not have enough re-entry points, so many of the replicas may be on hold. But as the simulation goes on, we can build databanks of re-entry points from any $B_\beta$ into any $B_\alpha$ (assuming that these two cells have a common boundary – otherwise the databank is trivially empty), which contain the last $X$ points by which the trajectory tried to escape from cell $B_\beta$ and enter cell $B_\alpha$. This way, each time a trajectory tries to exit a cell $B_\alpha$, we 