anchor.diff:  c...  compute displacements and residuals for this iteration
   c
           call fill(tmp,zero,ithree)
  -	ftmp=dnrm2(neq,bres,ione)
  +	ftmp=dnrm2(neq,bwork,ione)
           do i=1,neq
             deld=alf*p(i)
  -          en=deld*bres(i)
  +          en=deld*bwork(i)
             tmp(1)=tmp(1)+deld*deld
             tmp(3)=tmp(3)+en*en
  -          d(i)=d(i)+deld
  -        end do
  -	call daxpy(neq,-alf,z,ione,bres,ione)
  +          dispvec(i)=dispvec(i)+deld
  +        end do
  +	call daxpy(neq,-alf,z,ione,bwork,ione)
   	if(ip.eq.1) then
  -          call dcopy(neq,bres,ione,z,ione)
  +          call dcopy(neq,bwork,ione,z,ione)
   	  call dtbsv("u","n","n",neq,izero,alnz,ione,z,ione)
  -	  rtz1=ddot(neq,bres,ione,z,ione)
  +	  rtz1=ddot(neq,bwork,ione,z,ione)
   	end if
  -	tmp(2)=dnrm2(neq,bres,ione)
  +	tmp(2)=dnrm2(neq,bwork,ione)
           tmp(1)=sqrt(tmp(1))
           tmp(3)=sqrt(tmp(3))
           if(l.eq.1.and.(.not.used)) then
  
positive.code: c
  c...  compute new z-vector using symmetrized Gauss-Seidel preconditioner
  c
          if(ip.eq.2) call gspre(alnz,bres,z,rtz1,ja,neq,nnz)
          bet=rtz1
          if(rtz0.ne.zero) bet=rtz1/rtz0
          rtz0=rtz1
  
negative.code: c     nonlinear solution
  c
  cdebug      write(6,*) "Hello from pcginv_f!"
  cdebug      write(6,*) "neq,nprevdflag,nnz,ndtot,idout,kto,kw,used:"
  cdebug      write(6,*) neq,nprevdflag,nnz,ndtot,idout,kto,kw,used
  cdebug      write(6,*) "alnz(1-200):",(alnz(idb),idb=1,200)
  cdebug      write(6,*) "alnz(5001-5200):",(alnz(idb),idb=5001,5200)
  cdebug      write(6,*) "bresid:",(bresid(idb),idb=1,200)
  cdebug      write(6,*) "dispvec:",(dispvec(idb),idb=1,200)
  cdebug      write(6,*) "bwork:",(bwork(idb),idb=1,200)
  cdebug      write(6,*) "p:",(p(idb),idb=1,200)
  cdebug      write(6,*) "z:",(z(idb),idb=1,200)
  c
        do i=1,3
          cnvnl(i)=gcurr(i)/gprev(i)
  