anchor.diff:    !! Data is returned with absolute coordinates.
     !! @param[in] this the distributed sparse matrix.
     !! @param[inout] triplet_list the list to fill.
  -  SUBROUTINE GetRowColumn(this, triplet_list, row_start, row_end, &
  -       & column_start, column_end)
  +  SUBROUTINE PartionMatrix(this, triplet_list, row_start_list, &
  +       & column_start_list)
       !! Parameters
       TYPE(DistributedSparseMatrix_t), INTENT(IN) :: this
       TYPE(TripletList_t), INTENT(INOUT) :: triplet_list
  -    INTEGER, INTENT(IN) :: row_start, row_end
  -    INTEGER, INTENT(IN) :: column_start, column_end
  +    INTEGER, DIMENSION(:), INTENT(IN) :: row_start_list
  +    INTEGER, DIMENSION(:), INTENT(IN) :: column_start_list
       !! Local Data
       TYPE(SparseMatrix_t) :: merged_local_data
       TYPE(TripletList_t) :: local_triplet_list
  -    !! For Gathering
  -    INTEGER, DIMENSION(:), ALLOCATABLE :: per_proc_row_start
  -    INTEGER, DIMENSION(:), ALLOCATABLE :: per_proc_row_end
  -    INTEGER, DIMENSION(:), ALLOCATABLE :: per_proc_col_start
  -    INTEGER, DIMENSION(:), ALLOCATABLE :: per_proc_col_end
       !! Send Buffer
       INTEGER, DIMENSION(:), ALLOCATABLE :: send_per_proc
       INTEGER, DIMENSION(:), ALLOCATABLE :: send_buffer_offsets
  
positive.code:     DEALLOCATE(send_buffer_row)
      DEALLOCATE(send_buffer_offsets)
      DEALLOCATE(send_per_proc)
      DEALLOCATE(per_proc_row_start)
      DEALLOCATE(per_proc_row_end)
      DEALLOCATE(per_proc_col_start)
      DEALLOCATE(per_proc_col_end)
    END SUBROUTINE GetRowColumn
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    !> Extracts a triplet list of the data that is stored on this process.
    !! Data is returned with absolute coordinates.
  
negative.code: 
      !! Build a receive buffer
      ALLOCATE(recv_per_proc(total_processors))
      CALL MPI_Alltoall(send_per_proc, 1, MPI_INT, recv_per_proc, 1, MPI_INT, &
           & global_comm, grid_error)
      ALLOCATE(recv_buffer_offsets(total_processors))
      ALLOCATE(recv_buffer_row(SUM(recv_per_proc)))
      ALLOCATE(recv_buffer_col(SUM(recv_per_proc)))
      ALLOCATE(recv_buffer_val(SUM(recv_per_proc)))
  