anchor.diff:      call mp_table_read_column_auto(group, 'cells', 'neighbours', neighbors)
       call mp_table_read_column_auto(group, 'cells', 'bmin', bmin)
       call mp_table_read_column_auto(group, 'cells', 'bmax', bmax)
  -    
  +
       allocate(x(size(points,2)))
       allocate(y(size(points,2)))
       allocate(z(size(points,2)))
  -    
  +
       x = points(1,:)
       y = points(2,:)
       z = points(3,:)
  
positive.code:     implicit none
      type(photon),intent(in) :: p
      integer :: ic
      type(kdtree2_result) :: results(3)
      real(dp) :: point(3)
      if(debug) write(*,'(" [debug] find_cell")')
      ! TODO: nearest-neighbor algorithm - potentially going to be the
      ! bottleneck.
      point = [p%r%x, p%r%y, p%r%z]
      call kdtree2_n_nearest(geo%tree, point, 3, results)
      ic = results(1)%idx
      icell = new_grid_cell(ic, geo)
    end function find_cell
  
negative.code:           geo%mask_map(iv) = ic
         end if
      end do
  
      where(geo%volume < 0._dp) geo%volume = 0._dp
  
      geo%n_dim = 3
  