anchor.diff:      !!
       !!----------------------------------------------------------
       subroutine distribute_precip(current_precip, last_precip, local_fraction, precip_delta)
  +        implicit none
           real, dimension(:,:), intent(inout) :: current_precip, last_precip
           real, intent(in) :: local_fraction
           logical, intent(in) :: precip_delta
  
positive.code:     use module_mp_wsm6,             only: wsm6, wsm6init
      use module_mp_simple,           only: mp_simple_driver
      use mod_wrf_constants !,          only: rhoair0, rhowater, rhosnow, cliq, cpv
      implicit none
  
      ! permit the microphysics to update on a longer time step than the advection
  
negative.code:         end do
                  
      end subroutine distribute_precip
      
      subroutine apply_rain_fraction(current_date, rain_fraction, current_precip, last_precip, precip_delta)
          implicit none
          double precision                        :: current_date
          real, dimension(:,:,:), intent(in)      :: rain_fraction
          real, dimension(:,:),   intent(inout)   :: current_precip, last_precip
          logical,                intent(in)      :: precip_delta
          ! relies on module variable this_precip as a temporary array
          
          integer :: i,j, nx,ny
          integer :: x,y, point
          integer :: n_correction_points, correction_step
          real    :: year_fraction
          
          nx=size(current_precip,1)
          ny=size(current_precip,2)
          
          n_correction_points = size(rain_fraction,3)
          year_fraction = calc_year_fraction(current_date)
          correction_step = nint(n_correction_points * year_fraction)
          
          if (precip_delta) then
              do j=2,ny-1
                  do i=2,nx-1
                      this_precip(i,j)    = current_precip(i,j)-last_precip(i,j)
                      current_precip(i,j) = last_precip(i,j)
                  end do
              end do
          else
              do j=2,ny-1
                  do i=2,nx-1
                      this_precip(i,j)    = last_precip(i,j)
                      current_precip(i,j) = current_precip(i,j)-last_precip(i,j)
                  end do
              end do
          endif
          
          do j=2,ny-1
              do i=2,nx-1
                  current_precip(i,j) = current_precip(i,j)+this_precip(i,j)*rain_fraction(i,j,correction_step)
              end do
          end do
                  
      end subroutine apply_rain_fraction
  
      
      !>----------------------------------------------------------
      !! Microphysical driver
  