anchor.diff:  !       calculate these once for every call because they are only a function of dt
           cloud2snow = exp(-1.0*snow_formation_time_const*dt)
           cloud2rain = exp(-1.0*rain_formation_time_const*dt)
  +        snow_evap  = exp(-1.0*snow_evap_time_const*dt)
  +        rain_evap  = exp(-1.0*rain_evap_time_const*dt)
  +
           !$omp parallel private(i,j,temperature), &
           !$omp copyin(cloud2rain,cloud2snow,snow_melt,snow_evap,rain_evap),&
           !$omp shared(pressure,th,pii,qv,qc,qs,qr,rain,snow,dz),&
           !$omp firstprivate(dt,ims, ime, jms, jme, kms, kme, its, ite, jts, jte, kts, kte)
           allocate(temperature(kts:kte))
  -        if (dt<1e-10) print*, dt ! for some reason this seems to fix an issue with ifort -O(anything) not copying dt in to the parallel region(?)
  +        if (dt<1e-10) print*, "dt=",dt ! for some reason this seems to fix an issue with ifort -O(anything) not copying dt in to the parallel region(?)
           !$omp do
           do j = jts,jte
               do i = its, ite
  
positive.code:                 endif
                  excess = excess*(-1) !DEBUG
              endif
          enddo
          if (iteration==15) then
              !$omp critical (print_lock)
              print*, "qv_simple failed to converge", pre_t, pressure, qv
              !$omp end critical (print_lock)
              qv = sat_mr(pre_t,pressure)
              temperature = pre_t
              qc = pre_qc
  
negative.code:         real    :: vapor2temp,excess,deltat,pre_qc,pre_qv,pre_t,lastqv
          integer :: iteration
          real    :: maxerr
          real :: qv_iters(15), t_iters(15)
  
          maxerr = 1e-4
          iteration = 0
          lastqv = qv + maxerr * 2
          vapor2temp = (LH_vapor + (373.15 - temperature) * dLHvdt) / heat_capacity
  