anchor.diff:  
             cell_shift = floor(xi)
             actual_cell = modulo(cell + cell_shift , solvent_cells% L)
  -          actual_idx = compact_p_to_h(actual_cell, solvent_cells%M) + 1
  +          actual_idx = compact_p_to_h(actual_cell-1, solvent_cells%M) + 1
   
             start = solvent_cells% cell_start(actual_idx)
             n = solvent_cells% cell_count(actual_idx)
  
positive.code: 
      ! todo: deposit extra energy
  
      p = floor( (solvent%pos(:, idx) / solvent_cells%a) - solvent_cells%origin )
      cell_idx = compact_p_to_h(p, solvent_cells%M) + 1
  
      ! transfer mass
  
negative.code:     cell = compact_h_to_p(cell_idx - 1, solvent_cells%M) + 1
  
      ! If energy is positive, go for one cell.
      ! todo: always go around several cells
  
      if (energy > 0) then
         start = solvent_cells% cell_start(cell_idx)
  