anchor.diff:              allocate(r_i(3, N))
               allocate(r_np_i(3, N))
               allocate(r_right(3, N))
  +            allocate(m_i(N))
  +            allocate(m_np_i(N))
  +            allocate(m_right(N))
   
               a_right = 0._xp
   
  
positive.code: 
        real(xp), allocatable :: a_comm_i(:, :), a_comm_np_i(:, :), a_right(:, :)
        real(xp), allocatable :: r_i(:, :), r_np_i(:, :), r_right(:, :)
        real(xp), allocatable :: a_reduced(:, :)
  
        integer :: err = 0
  
negative.code:             deallocate(r_i)
              deallocate(r_np_i)
              deallocate(r_right)
              deallocate(m_i)
              deallocate(m_np_i)
              deallocate(m_right)
  
           case(2) !FIXME: Does not work with different masses
              allocate(a_comm_i(3, N))
              allocate(r_i(3, N))
              ! Iterate over each proc. sending each time the local position
  