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(a_buf(sparse_a%columns))
   
       !! Allocate space for a received column
  
positive.code:     DEALLOCATE(values_per_column_l)
      DEALLOCATE(index_l)
      DEALLOCATE(values_l)
      DEALLOCATE(values_per_column_pi)
      DEALLOCATE(index_pi)
      DEALLOCATE(values_pi)
      DEALLOCATE(recv_index)
      DEALLOCATE(recv_values)
      DEALLOCATE(dot_values)
  
negative.code:        IF (pi_j .GE. AMat%start_row .AND. pi_j .LT. AMat%end_row) THEN
            root = column_rank
            DO II = 1, num_local_pivots
               local_pi_i = local_pivots(II)
               fill_counter = fill_counter + 1
               a_buf(fill_counter) = dense_a(local_pi_j,local_pi_i)
            END DO
  