anchor.diff:          call this%v_grid%set_grid_dimensions(       nx_global, ny_global, nz_global, ny_extra = 1)
   
           call this%grid2d%set_grid_dimensions(       nx_global, ny_global, 0)
  +
           call this%u_grid2d%set_grid_dimensions(     nx_global, ny_global, 0, nx_extra = 1)
           this%u_grid2d%ims = this%u_grid2d%ims - nsmooth
           this%u_grid2d%ime = this%u_grid2d%ime + nsmooth
  
positive.code:         implicit none
          type(domain_t), intent(inout) :: this
  
          real, allocatable :: temp_z(:,:,:)
  
          call setup_geo(this%geo,   this%latitude%data_2d,   this%longitude%data_2d,   this%z%data_3d)
          call array_offset_x(this%z%data_3d, temp_z)
          call setup_geo(this%geo_u, this%u_latitude%data_2d, this%u_longitude%data_2d, temp_z)
          call array_offset_y(this%z%data_3d, temp_z)
          call setup_geo(this%geo_v, this%v_latitude%data_2d, this%v_longitude%data_2d, temp_z)
  
          if (allocated(temp_z)) deallocate(temp_z)
      end subroutine setup_domain_geo
  
negative.code:     !! are extrapolated outside of that subset region
      !!
      !! ---------------------------------
      subroutine extend_array(input, output, grid, extrapolate)
          implicit none
          real,         intent(in)    :: input(:,:,:)
          real,         intent(inout) :: output(:,:,:)
          type(grid_t), intent(in)    :: grid
          logical,      intent(in),   optional :: extrapolate
  
          ! loop counter
          integer :: i
  