anchor.diff:         END IF
          col_root = col_root_lookup(pi_j)
   
  -       !! Compute A Buffer AMat[:,pi_j]
  -       local_pi_j = pi_j - AMat%start_row + 1
  -       IF (pi_j .GE. AMat%start_row .AND. pi_j .LT. AMat%end_row) THEN
  -          DO II = 1, num_local_pivots
  -             local_pi_i = local_pivots(II)
  -             a_buf(II) = dense_a(local_pi_j,local_pi_i)
  -          END DO
  -       END IF
  -       row_root = row_root_lookup(pi_j)
  -
          !! Broadcast column JJ, and Inverse Factor
          CALL BroadcastVector(recv_num_values, recv_index, recv_values, &
               & col_root, row_comm)
          CALL MPI_Bcast(inverse_factor, 1, MPINTREAL, col_root, row_comm, &
               & grid_error)
   
  -       !! Broadcast A values
  -       CALL BroadcastARow(num_local_pivots,a_buf,row_root,column_comm)
  +       !! Extract the row of A to a dense matrix for easy lookup
  +       DO II = MAX(acol%outer_index(pi_j),1), acol%outer_index(pi_j+1)
  +          a_buf(acol%inner_index(II)) = acol%values(II)
  +       END DO
   
          !! Compute Dot Products
          CALL DotAllPivoted(recv_num_values, recv_index, recv_values, &
  
positive.code:     INTEGER :: pi_i, pi_j
      !! Local Variables
      TYPE(SparseMatrix_t) :: sparse_a
      REAL(NTREAL), DIMENSION(:,:), ALLOCATABLE :: dense_a
      !! For Storing The Results
      INTEGER, DIMENSION(:), ALLOCATABLE :: values_per_column_l
  
negative.code:     CALL ConstructDiag(AMat, dense_a, diag)
  
      !! Root Lookups
      ALLOCATE(col_root_lookup(AMat%logical_matrix_dimension))
      CALL ConstructRankLookup(AMat, col_root_lookup)
  
      !! Allocate space for L
      ALLOCATE(values_per_column_l(sparse_a%columns))
      ALLOCATE(index_l(sparse_a%rows, sparse_a%columns))
      ALLOCATE(values_l(sparse_a%rows, sparse_a%columns))
      values_per_column_l = 0
  
      !! Buffer for fast indexing of A
      ALLOCATE(a_buf(sparse_a%columns))
      a_buf = 0
  
      !! Allocate space for a received column
      ALLOCATE(recv_index(sparse_a%rows))
      ALLOCATE(recv_values(sparse_a%rows))
      ALLOCATE(dot_values(sparse_a%columns))
  
      !! Pregather the full column of A.
      CALL GatherMatrixColumn(sparse_a,acol)
  
      !! Main Loop
      DO JJ = 1, rank_in
  