anchor.diff:          bilin_weights=(/x1*f2,x0*f2,x3*f1,x2*f1/)
       end function bilin_weights
       
  -    !   xw=minxw(xw,lo%lon,xc,yc,lon)
  +    !>------------------------------------------------------------
  +    !!  Find the minimum next step size in the x direction
  +    !!  xw=minxw(xw,lo%lon,xc,yc,lon)
  +    !!
  +    !!------------------------------------------------------------
       integer function minxw(xw,longrid,xpos,ypos,lon)
           implicit none
           integer, intent(in)::xw,xpos,ypos
  
positive.code:         find_location%x=x
          find_location%y=y
      end function find_location
          
          
      ! given a closest position, return the 4 points surrounding the lat/lon position in lo%lat/lon
      type(fourpos) function find_surrounding(lo,lat,lon,pos,nx,ny)
          implicit none
          class(interpolable_type),intent(in)::lo
  
negative.code:         endif
      end function minyw
      
      !>------------------------------------------------------------
      !! Find a location lat,lon in lo%lat,lon grids
      !!  Assumes that the lat/lon grids are semi-regular (dx/dy aren't constant but they are nearly so)
      !!  Calculates dx/dy at the middle of the lat/lon grids, then calculates the location of lat,lon
      !!  input point using those coordinates.  
      !!  Next proceeds to calculate a new position based on the dx/dy at that position until the new
      !!  position is within 1 gridcell of the current position
      !!  Once that "within 1" position is found, search all cells in a 3x3 grid for the minimum distance
      !!  return a position datatype that includes the found x/y location
      !! 
      !! currently tries up to three methods to find the location 
      !!   1) assume relatively even dxdy and compute location (iterate a <20times)
      !!   2) use a log(n) search (divide and conquer) also iterate <20times)
      !!   a) if 1 or 2 are approximately successful: 
      !!       search a small region around the "best" point to find the real best point
      !!   3) in the diabolical case where 1 and 2 fail (rare) just search every single location (n^2)
      !!   Could add a 2.5) downhill search algorithm...
      !!
      !!------------------------------------------------------------
      type(position) function find_location(lo,lat,lon,lastpos)
          implicit none
          class(interpolable_type),intent(inout)::lo
  