anchor.diff:      ALLOCATE(index_l(sparse_a%rows, sparse_a%columns))
       ALLOCATE(values_l(sparse_a%rows, sparse_a%columns))
       values_per_column_l = 0
  +    ALLOCATE(values_per_column_pi(sparse_a%columns))
  +    ALLOCATE(index_pi(sparse_a%rows, sparse_a%columns))
  +    ALLOCATE(values_pi(sparse_a%rows, sparse_a%columns))
  +    values_per_column_pi = 0
   
       !! Allocate space for a received column
       ALLOCATE(recv_index(sparse_a%rows))
  
positive.code:     !! Local Variables
      TYPE(SparseMatrix_t) :: sparse_a
      REAL(NTREAL), DIMENSION(:,:), ALLOCATABLE :: dense_a
      INTEGER, DIMENSION(:), ALLOCATABLE :: values_per_column_l
      INTEGER, DIMENSION(:,:), ALLOCATABLE :: index_l
      REAL(NTREAL), DIMENSION(:,:), ALLOCATABLE :: values_l
      !! Temporary Variables
      INTEGER, DIMENSION(:), ALLOCATABLE :: recv_index
      REAL(NTREAL), DIMENSION(:), ALLOCATABLE :: recv_values
  
negative.code:              END IF
               CALL MPI_Allreduce(MPI_IN_PLACE, Aval, 1, MPINTREAL, MPI_SUM, &
                    & column_comm, grid_error)
               !! Insert Into L
               fill_counter = fill_counter + 1
               insert_value = inverse_factor * (Aval - dot_values(fill_counter))
               IF (JJ .GE. AMat%start_row .AND. JJ .LT. AMat%end_row) THEN
                  CALL AppendToVector(values_per_column_l(local_pi_i), &
                       & index_l(:,local_pi_i), values_l(:, local_pi_i), &
  