anchor.diff:      external :: evalf_,evalc_,evaljac_
   
       ! LOCAL ARRAYS
  -    real(8) :: ffilter(MAXITER),hfilter(MAXITER),rl(n),ru(n),y(n),z(n)
  +    real(8) :: ffilter(MAXITER),hfilter(MAXITER),rl(n),ru(n),y(n),z(n),zd(n)
   
       ! LOCAL SCALARS
  -    integer :: i,iter,m,nf
  -    real(8) :: c,cfeas,fx,fxnew,fz,hxnorm,hznorm,rinfeas
  +    integer :: i,j,k,iter,jcnnz,m,nf
  +    real(8) :: c,cfeas,dnorm,fx,fxnew,fz,hxnorm,hznorm,hzdnorm,nzdnorm
   
       iter = 1
   
  
positive.code:     ! Initialization
      ! TODO: check for errors when allocating
  
      hxnorm = 0.0D0
      do i = 1,me
         call uevalc(n,x,i,c,flag)
         hxnorm = max(hxnorm, abs(c))
      end do
      do i = me + 1,m
         call uevalc(n,x,i,c,flag)
         hxnorm = max(hxnorm, max(0.0D0, c))
      end do
  
      call uevalf(n,x,fx,flag)
  
      do while ( iter .le. MAXITER )
  
         if ( verbose ) write(*,900) iter
  
  
negative.code: 
         fx = fxnew
  
         hxnorm = evalinfeas(n,x,me,mi,flag)
         
         iter = iter + 1
  
         if ( iter .gt. MAXITER ) then
            flag = 2
            exit
         end if
  
      end do
  
      deallocate(linrhs,linpos,linvar,linval)
  
  
      ! NON-EXECUTABLE STATEMENTS
      
  