anchor.diff:      allocate(grid%xl(-ng:nx+ng-1))
       allocate(grid%xr(-ng:nx+ng-1))
   
  +    allocate(grid%Al(-ng:nx+ng-1))
  +    allocate(grid%Ar(-ng:nx+ng-1))
  +    allocate(grid%V(-ng:nx+ng-1))
  +
       do i = grid%lo-ng, grid%hi+ng
          grid%xl(i) = dble(i  )*grid%dx + xmin
          grid%xr(i) = dble(i+1)*grid%dx + xmin
  
positive.code:      integer :: hi = -1
       integer :: nx = -1
       integer :: ng = -1
       real (kind=dp_t) :: xmin, xmax, dx
       real (kind=dp_t), pointer :: x(:) => Null()
       real (kind=dp_t), pointer :: xl(:) => Null()
       real (kind=dp_t), pointer :: xr(:) => Null()  
       character (len=32) :: xlboundary
       character (len=32) :: xrboundary
    end type grid_t
  
    ! the datatype for a variable that lives in a zone on the grid 
  
negative.code:   use datatypes_module
  
    implicit none
  
    real (kind=dp_t) :: pi = 3.141592653589793238462643383279502884_dp_t
  
    ! the datatype for the grid coordinate information
    type grid_t 
  