anchor.diff:              
               call SpMtx_Ax(tmpsol,Restrict,clrhs,dozero=.true.,transp=.true.) ! RB
             else
  -          if (sctls%smoothers==-1) then
  -            call SpMtx_Ax(tmpsol2,Restrict,csol,dozero=.true.,transp=.true.) ! interpolation
  -            tmpsol=0.0_rk
  -            call exact_sparse_multismoother(tmpsol,A,tmpsol2)
  -          else
  -            call SpMtx_Ax(tmpsol,Restrict,csol,dozero=.true.,transp=.true.) ! interpolation
  -          endif
  +            if (sctls%smoothers==-1) then
  +              call SpMtx_Ax(tmpsol2,Restrict,csol,dozero=.true.,transp=.true.) ! interpolation
  +              tmpsol=0.0_rk
  +              call exact_sparse_multismoother(tmpsol,A,tmpsol2)
  +            else
  +              call SpMtx_Ax(tmpsol,Restrict,csol,dozero=.true.,transp=.true.) ! interpolation
  +            endif
             endif
           else ! apply coarse solve:
             if (present(cdat)) then
  
positive.code:           A%arrange_type=A_tmp%arrange_type
            call SpMtx_Destroy(A_tmp)
          else
            call sparse_multisolve(sol=sol,A=a,rhs=rhs, &
                                 A_interf_=A_interf_, &
                                  refactor=refactor_) !fine solves 
          endif
        elseif (refactor_.and.sctls%input_type==DCTL_INPUT_TYPE_ASSEMBLED) then
            A_tmp=SpMtx_newInit(nnz=A%nnz,nblocks=A%nblocks,nrows=A%nrows,&
                               ncols=A%ncols,&
                               indi=A%indi,indj=A%indj,val=A%val,&
                               arrange_type=A%arrange_type,M_bound=A%M_bound)
            A%arrange_type=D_SpMtx_ARRNG_NO
            call SpMtx_arrange(A,D_SpMtx_ARRNG_ROWS,sort=.true.)
   write(stream,*)'BBBBBBBBBBBBAAAA is:'
   write(stream,*)'A%nrows=',A%nrows
   call SpMtx_printRaw(A,startnz=1,endnz=A%mtx_bbe(2,2))
   write(stream,*)'BBBBBBBBBBBBAAAA :'
   call flush(stream)
            call sparse_multisolve(sol=sol,A=A,rhs=rhs, &
                                    refactor=refactor_) !fine solves 
            ! put the original structure and orders back:
            A%indi=A_tmp%indi
            A%indj=A_tmp%indj
            A%val=A_tmp%val
            A%M_bound=A_tmp%M_bound
            A%nrows=A_tmp%nrows
            A%ncols=A_tmp%ncols
            A%arrange_type=A_tmp%arrange_type
            call SpMtx_Destroy(A_tmp)
        else
          call sparse_multisolve(sol=sol,A=a,rhs=rhs, &
                               A_interf_=A_interf_, &
                                refactor=refactor_) !fine solves 
        endif
      endif !}
    end subroutine preconditioner
  
    !--------------------------
  
negative.code:     do i=2,it
        if (alpha(i)==0.or.beta(i)<0) then
          print *,'Unable to compute eigenvalue number',i,' and '
          do j=1,i
            print *,j,' alpha:',alpha(j),' beta:',beta
          enddo
          return
  