anchor.diff:                 else
                     if (debug) print*, 'R:', rank, 'sending reduce'
                  end if
  +
                  ! Receive interaction in i
  -               call mpi_reduce(a_comm, a, 3*N, MPI_REAL_XP, MPI_SUM, i, MPI_COMM_WORLD, err)
  +               call mpi_reduce(a_comm_i,    a, 3*N, MPI_REAL_XP, MPI_SUM,          i, MPI_COMM_WORLD, err)
  +
  +               ! Receive interaction in np-i-1
  +               call mpi_reduce(a_comm_np_i, a, 3*N, MPI_REAL_XP, MPI_SUM, nprocs-i-1, MPI_COMM_WORLD, err)
  +
                  if (debug) call mpi_barrier(MPI_COMM_WORLD, err)
   
                  if (rank == 0) then
  
positive.code:             !--------------------------------
              ! Allocate and initialize
              !--------------------------------
              allocate(a_comm(3, N))
              allocate(a_right(3, N))
              allocate(r_i(3, N))
              allocate(r_np_i(3, N))
  
negative.code: 
        real(xp), intent(out) :: a(:,:)
  
        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(:, :)
  
  