anchor.diff:    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)
  
positive.code:    call zgesvd('o','s',mm,nn,b,mm,s,b,1,u,mn,work,lwork,rwork,info)
     if(info.ne.0)then;write(*,*)subnam,': info: ',info;stop;endif
     if(s(1).ne.0.d0)then 
         r(k-1)=chop(s(1:mn), tol/dsqrt(dble(m-l-1)))
     else
         r(k-1)=0
     endif
  
negative.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)
    end do
    deallocate(work,tau,mat,u)
  
  