anchor.diff:          !$OMP PARALLEL DEFAULT(PRIVATE) SHARED(md, d1, d2) REDUCTION(+:throw_error)
           throw_error = 0
           do j = d1, d2
  +            ecw = md%domains(j)%exterior_cells_width
               !$OMP DO SCHEDULE(STATIC) COLLAPSE(2)
               do i1 = STG, ELV
  -                do i2 = 1, md%domains(j)%nx(2)
  -                    do i3 = 1, md%domains(j)%nx(1)
  +                do i2 = 1+ecw, md%domains(j)%nx(2)-ecw
  +                    do i3 = 1+ecw, md%domains(j)%nx(1)-ecw
                           if((md%domains(j)%U(i3, i2, i1) >  bignum) .or. &
                              (md%domains(j)%U(i3, i2, i1) < -bignum) .or. &
                              (md%domains(j)%U(i3, i2, i1) /= md%domains(j)%U(i3, i2, i1))) then
  
positive.code: 
  
      ! Scan domains for unreasonably large numbers or NaN issues
      subroutine check_for_overflow(md, flag, domain_ind)
          type(multidomain_type), intent(inout) :: md
          character(len=*), intent(in) :: flag
          integer(ip), optional, intent(in):: domain_ind
  
          integer :: throw_error
          integer(ip) :: i1, i2, i3, j, d1, d2
          real(dp), parameter :: bignum = HUGE(1.0)/2.0 ! Deliberate single-precision number
  
          if(present(domain_ind)) then
  
negative.code:         !$OMP END PARALLEL
  
          if(throw_error > 0) then
              ! Write out info on the error
              do j = d1, d2
                  ecw = md%domains(j)%exterior_cells_width
                  do i1 = STG, ELV
                      do i2 = 1+ecw, md%domains(j)%nx(2)-ecw
                          do i3 = 1+ecw, md%domains(j)%nx(1)-ecw
                              if((md%domains(j)%U(i3, i2, i1) >  bignum) .or. &
                                 (md%domains(j)%U(i3, i2, i1) < -bignum) .or. &
                                 (md%domains(j)%U(i3, i2, i1) /= md%domains(j)%U(i3, i2, i1))) then
  