anchor.diff:          implicit none
           class(domain_t), intent(inout)  :: this
           class(options_t),intent(in)     :: options
  -        real, allocatable :: temporary_data(:,:)
  +        real, allocatable :: temporary_data(:,:), temp_offset(:,:)
   
           ! Read the terrain data
           call load_data(options%parameters%init_conditions_file,   &
  
positive.code:                        temporary_data, this%grid)
          this%longitude%data_2d = temporary_data(this%grid%ims:this%grid%ime, this%grid%jms:this%grid%jme)
  
          ! Read the u-grid longitude data if specified, other wise interpolate from mass grid
          if (options%parameters%ulon_hi /= "") then
              call load_data(options%parameters%init_conditions_file,   &
  
negative.code:             endif
  
          ! Interpolate to the u staggered grid
          else if (uvar) then
  
              ! use the alternate allocate below to vertically interpolate to this first, then smooth, then subset to the actual variable
              allocate(temp_3d(size(forcing%geo_u%geolut%x,2), size(var_data,2), size(forcing%geo_u%geolut%x,3)))
              allocate(pre_smooth(size(forcing%geo_u%geolut%x,2), size(input_data%data_3d,2), size(forcing%geo_u%geolut%x,3) ))
  
              windowsize = (size(forcing%geo_u%geolut%x,2) - size(var_data,1)) / 2
              nx = size(forcing%geo_u%geolut%x,2)
              ny = size(forcing%geo_u%geolut%x,3)
  
              call geo_interp(pre_smooth, input_data%data_3d, forcing%geo_u%geolut)
              call vinterp(temp_3d, pre_smooth, forcing%geo_u%vert_lut)
              call smooth_array(temp_3d, windowsize=windowsize, ydim=3)
  
              var_data = temp_3d(windowsize+1:nx-windowsize,:,windowsize+1:ny-windowsize)
  
          ! Interpolate to the v staggered grid
          else if (vvar) then
  
              ! use the alternate allocate below to vertically interpolate to this first, then smooth, then subset to the actual variable
              allocate(temp_3d(size(forcing%geo_v%geolut%x,2), size(var_data,2), size(forcing%geo_v%geolut%x,3)))
              allocate(pre_smooth(size(forcing%geo_v%geolut%x,2), size(input_data%data_3d,2), size(forcing%geo_v%geolut%x,3) ))
  
              windowsize = (size(forcing%geo_v%geolut%x,2) - size(var_data,1)) / 2
              nx = size(forcing%geo_v%geolut%x,2)
              ny = size(forcing%geo_v%geolut%x,3)
  
              call geo_interp(pre_smooth, input_data%data_3d, forcing%geo_v%geolut)
              call vinterp(temp_3d, pre_smooth, forcing%geo_v%vert_lut)
              call smooth_array(temp_3d, windowsize=windowsize, ydim=3)
  
              var_data = temp_3d(windowsize+1:nx-windowsize,:,windowsize+1:ny-windowsize)
          endif
  
      end subroutine
  