anchor.diff:          real, intent(inout) :: qc       (ims:ime,kms:kme,jms:jme)
           real, intent(inout) :: qs       (ims:ime,kms:kme,jms:jme)
           real, intent(inout) :: qr       (ims:ime,kms:kme,jms:jme)
  -        real, intent(inout) :: dz       (ims:ime,kms:kme,jms:jme)
           real, intent(inout) :: rain     (ims:ime,jms:jme)
           real, intent(inout) :: snow     (ims:ime,jms:jme)
  -        real,intent(in)    :: dt
  -        integer,intent(in) :: ims, ime, jms, jme, kms, kme
  -        integer,intent(in) :: its, ite, jts, jte, kts, kte
  +        real, intent(in)    :: dt
  +        real, intent(in)    :: dz       (ims:ime,kms:kme,jms:jme)
  +        integer,intent(in)  :: ims, ime, jms, jme, kms, kme
  +        integer,intent(in)  :: its, ite, jts, jte, kts, kte
   
           ! local variables
           real,allocatable,dimension(:) :: temperature
  
positive.code: !       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)
          !$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(?)
          !$omp do
          do j = jts,jte
              do i = its, ite
  
negative.code:             qvsat = sat_mr(temperature,pressure)
              ! if saturated create clouds
              if (qv>qvsat) then
                  excess = (qv-qvsat)*0.5
                  ! temperature change if all vapor is converted
                  temperature = temperature+(excess*vapor2temp)
                  qv = qv-excess
                  qc = qc+excess
              ! if unsaturated and clouds exist, evaporate clouds
              else if (qc>0) then
                  excess = (qvsat-qv)*0.5
                  if (excess<qc) then
                      temperature = temperature-(excess*vapor2temp)
                      qv = qv+excess
  