anchor.diff:            scalerval(i)=dsqrt(dabs(M%diag(i)))
           enddo
           do i=M%mtx_bbs(1,1),M%mtx_bbe(M%nblocks,M%nblocks)
  -          M%val_intf_full(i)=M%val_intf_full(i)*scalerval(M%indi(i))
  -          M%val_intf_full(i)=M%val_intf_full(i)*scalerval(M%indj(i))
  +          !M%val_intf_full(i)=M%val_intf_full(i)*scalerval(M%indi(i))
  +          !M%val_intf_full(i)=M%val_intf_full(i)*scalerval(M%indj(i))
  +          M%val(i)=M%val(i)*scalerval(M%indi(i))
  +          M%val(i)=M%val(i)*scalerval(M%indj(i))
           enddo
           do i=M%mtx_bbe(M%nblocks,M%nblocks)+1,M%nnz
             M%val(i)=M%val(i)*scalerval(M%indi(i))
  
positive.code:     float(kind=rk),dimension(:),pointer :: rtmp
      integer,dimension(:), pointer :: nnodesonclrol,ccount
      integer,dimension(2,2) :: bbe
  
      ! we assume this now:
      !! if (A%arrange_type==D_SpMtx_ARRNG_ROWS) then
  
negative.code:         elseif (layer<=lastlayer) then ! the node on ol_outer
  !rite(stream,*)'adding to outer: node=',node,' layer=',layer
            M%ol_outer(k)%ninds=M%ol_outer(k)%ninds+1
            ol_outer(M%ol_outer(k)%ninds)=node
          endif
        enddo
        call quicksort(M%ol_inner(k)%ninds,M%ol_inner(k)%inds)
        call quicksort(M%ax_sendidx(k)%ninds,M%ax_sendidx(k)%inds)
        call quicksort(M%ax_recvidx(k)%ninds,M%ax_recvidx(k)%inds)
        M%ol_solve(k)%ninds=M%ol_outer(k)%ninds+&
                            M%ol_inner(k)%ninds
        allocate(M%ol_solve(k)%inds(M%ol_solve(k)%ninds))
        j=M%ol_outer(k)%ninds
        M%ol_solve(k)%inds(1:j)=ol_outer(:)
        jj=j+M%ol_inner(k)%ninds
        M%ol_solve(k)%inds(j+1:jj)=M%ol_inner(k)%inds(:)
        call quicksort(M%ol_solve(k)%ninds,M%ol_solve(k)%inds)
        ! Now take out all foreign nodes from ol_outer:
        j=0
        do i=1,M%ol_outer(k)%ninds
          if (M%eptnmap(ol_outer(i))==clrnode) then
            j=j+1
            if (j<i) then
              ol_outer(j)=ol_outer(i)
            endif
          endif
        enddo
        M%ol_outer(k)%ninds=j
        allocate(M%ol_outer(k)%inds(M%ol_outer(k)%ninds))
        M%ol_outer(k)%inds=ol_outer(1:j)
        deallocate(ol_outer)
        call quicksort(M%ol_outer(k)%ninds,M%ol_outer(k)%inds)
        if (sctls%verbose>3.and.A%nrows<300) then 
          write(stream,*)k,':ol_solve:::',M%ol_solve(k)%inds
          write(stream,*)k,':ol_inner:::',M%ol_inner(k)%inds
          write(stream,*)k,':ax_sendidx:::',M%ax_sendidx(k)%inds
          write(stream,*)k,':ax_recvidx:::',M%ax_recvidx(k)%inds
          write(stream,*)k,':ol_outer:::',M%ol_outer(k)%inds
        endif
      enddo ! k 
      ! note: actually, interf/inner may contain also interf/receive_nodes
      !         connections 
  