anchor.diff:  	acc(2)=ftmp/tmp(2)
   	acc(3)=etmp/tmp(3)
   	l=0
  +c*
  +c****  I'm not sure why the following 4 lines are here.  This will always
  +c****  make the solution exit with a divergence error.
   	converge=.true.
   	if(idout.gt.1) write(kw,800) l
   	write(kto,800) l
   	go to 10
         end if
         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)
           call dcopy(neq,z,ione,p,ione)
  -	rtz0=ddot(neq,bres,ione,z,ione)
  +	rtz0=ddot(neq,bwork,ione,z,ione)
         else if(ip.eq.2) then
  -        call gspre(alnz,bres,z,rtz0,ja,neq,nnz)
  +        call gspre(alnz,bwork,z,rtz0,ja,neq,nnz)
           call dcopy(neq,z,ione,p,ione)
         end if
   c
  
positive.code:       if(idout.gt.1) write(kw,820) maxcg
        write(kto,820) maxcg
  10    continue
        if(nsol.gt.2) call dcopy(neq,d,ione,p,ione)
        call dcopy(neq,d,ione,z,ione)
        if(idout.gt.1) write(kw,900) (cnvnl(i),i=1,3),(scurr(i),i=1,3),
       & (si(i),i=1,3),(acc(i),i=1,3),(sstol(i),i=1,3)
        write(kto,900) (cnvnl(i),i=1,3),(scurr(i),i=1,3),
       & (si(i),i=1,3),(acc(i),i=1,3),(sstol(i),i=1,3)
  cdebug      write(6,*) "From end of pcginv_f!"
  cdebug      write(6,*) "alnz:",(alnz(idb),idb=1,neq)
  cdebug      write(6,*) "b:",(b(idb),idb=1,neq)
  cdebug      write(6,*) "d:",(d(idb),idb=1,neq)
  cdebug      write(6,*) "bres:",(bres(idb),idb=1,neq)
  cdebug      write(6,*) "p:",(p(idb),idb=1,neq)
  cdebug      write(6,*) "z:",(z(idb),idb=1,neq)
  800   format(/,
       & '     WARNING!  Apparent divergence in subiteration #',i5,'!',//)
  810   format(/,
  
negative.code:       end
  c
  c version
  c $Id: pcginv.f,v 1.3 2005/01/05 22:26:15 willic3 Exp $
  c
  c Generated automatically by Fortran77Mill on Wed May 21 14:15:03 2003
  c
  