anchor.diff:                    & index_l(:,local_JJ), values_l(:, local_JJ), local_row, &
                     & insert_value)
             END IF
  -          root = row_rank
             !! Extract column J for sending later
             recv_num_values = values_per_column_l(local_JJ)
             recv_index(:recv_num_values) = index_l(:recv_num_values,local_JJ)
             recv_values(:recv_num_values) = values_l(:recv_num_values, local_JJ)
          END IF
  +       col_root = col_root_lookup(JJ)
  +
          !! Broadcast column JJ, and Inverse Factor
  -       CALL MPI_Allreduce(MPI_IN_PLACE, root, 1, MPI_INTEGER, MPI_SUM, &
  -            & row_comm, grid_error)
          CALL BroadcastVector(recv_num_values, recv_index, recv_values, &
  -            & root, row_comm)
  +            & col_root, row_comm)
          CALL MPI_Allreduce(MPI_IN_PLACE, inverse_factor, 1, MPINTREAL, MPI_SUM, &
               & within_slice_comm, grid_error)
   
  
positive.code:     DO JJ = 1, AMat%actual_matrix_dimension
         !! Dot Column JJ with Column JJ, Insert Value into L[J,J]
         inverse_factor = 0
         root = 0
         IF (JJ .GE. AMat%start_column .AND. JJ .LT. AMat%end_column) THEN
            local_JJ = JJ - AMat%start_column + 1
            CALL DotAllHelper(values_per_column_l(local_JJ), &
  
negative.code:     dense_a = 0
      CALL ConstructDenseFromSparse(sparse_a, dense_a)
  
      !! Root Lookups
      ALLOCATE(col_root_lookup(AMat%logical_matrix_dimension))
      CALL ConstructRankLookup(AMat, col_root_lookup=col_root_lookup)
  
      !! Allocate space for L
      ALLOCATE(values_per_column_l(sparse_a%columns))
      ALLOCATE(index_l(sparse_a%rows, sparse_a%columns))
  