anchor.diff:          
       end subroutine mp
       
  -    subroutine mp_finish()
  +    !>----------------------------------------------------------
  +    !! Finalize microphysical routines
  +    !!
  +    !! This routine will call the finalization routines (if any) for the specified microphysics packages. 
  +    !! It also deallocates any module level variables, e.g. SR
  +    !! 
  +    !! @param   options     ICAR model options to specify required initializations
  +    !!
  +    !!----------------------------------------------------------
  +    subroutine mp_finish(options)
           implicit none
  +        type(options_type),intent(in)::options
  +        
           if (allocated(SR)) then
               deallocate(SR)
           endif
  +        if (allocated(last_snow)) then
  +            deallocate(last_snow)
  +        endif
  +        if (allocated(last_rain)) then
  +            deallocate(last_rain)
  +        endif
  +        if (allocated(this_precip)) then
  +            deallocate(this_precip)
  +        endif
       end subroutine mp_finish
   end module microphysics
  
positive.code:                 
      end subroutine distribute_precip
      
      subroutine mp(domain,options,dt_in, model_time)
          implicit none
          type(domain_type),intent(inout)::domain
  
negative.code:     integer, dimension(npoints) :: y_list = [ 1,1,1, 0,0, -1,-1,-1]
  contains
      
      
      !>----------------------------------------------------------
      !! Initialize microphysical routines
      !!
      !! This routine will call the initialization routines for the specified microphysics packages. 
      !! It also initializes any module level variables, e.g. update_interval
      !! 
      !! @param   options     ICAR model options to specify required initializations
      !!
      !!----------------------------------------------------------
      subroutine mp_init(options)
          implicit none
          type(options_type), intent(in)::options
  