# File interpolate.rb, line 313
    def interpolate(*coords)
      coords, org_coords, org_dims, newgrid = _interpo_match_coords(coords)
      crdmap = _interpo_reorder_2crdmap(coords, org_coords, org_dims)
      idxmap = _interpo_find_position(crdmap)

      z = val
      if z.is_a?(NArrayMiss)
        missval = ( (a=get_att('_FillValue')) ? a[0] : nil ) || 
                  ( (a=get_att('missing_value')) ? a[0] : nil ) || 
                  @@interpo_missval
        z = z.to_na(missval) 
      else
        missval = nil
      end

      na = c_interpo_do(newgrid.shape, idxmap, z, missval)   # [C-extension]

      if missval
        mask = na.ne(missval)
        na = NArrayMiss.to_nam_no_dup(na,mask)
      end

      va = VArray.new(na, data, name)

      ret = GPhys.new(newgrid, va)
      ret.grid.set_lost_axes(self.lost_axes)
      ret
    end