anchor.diff:     if(info.ne.0)then;write(*,*)subnam,': info: ',info;stop;endif
      !r(k-1)=chop(s(1:mn),tol/dsqrt(dble(m-l+1)))
      if(s(1).ne.0.d0)then 
  -       r(k-1)=chop(s(1:mn), tol/dsqrt(dble(m-l-1)))
  +       r(k-1)=chop(s(1:mn), tol/dsqrt(dble(m-l)))
      else
          r(k-1)=0
      endif
  
positive.code:     call dcopy(mm*mn, mat,1,arg%u(k)%p,1)
     end if
     call dcopy(mn*kk, u,1,arg%u(k+1)%p,1)
     !t2=timef()
     !print *,'Time for the rest:',t2-t1
    end do
    deallocate(work,tau,mat,u)
  
  
negative.code:   l=arg%l; m=arg%m
    if(m.le.l)return
    r=>arg%r; n=>arg%n
    nn=maxval(n(l:m)); rr=maxval(r(l-1:m))
    lwork=128*nn*rr
    allocate(work(lwork),s(nn*rr), mat(rr*nn*rr),u(rr*nn*rr), stat=info)
  