diff --git a/mo_grotz.f90 b/mo_grotz.f90
index 76242c4c1b879ae8749ca7c7a730d4e1a2a4e439..1f26ba1bfcf524a2cf2328436d64e2c25cbe6ea7 100644
--- a/mo_grotz.f90
+++ b/mo_grotz.f90
@@ -227,6 +227,8 @@ CONTAINS
                     CALL snow_precip (m_snow, H_abs_snow, thick_snow, dt, liquid_precip, T2m)
                 ELSE IF(MAX(liquid_precip, solid_precip)>0.0_wp .AND. N_Active==1) THEN !Precip in water layer
                     CALL snow_precip_0 (H_abs(1), S_abs(1), m(1), T(1), dt, liquid_precip, T2m)
+                ELSE IF(MIN(liquid_precip, solid_precip)<0.0_wp .AND. thick_snow>0._wp .AND. N_Active>1) THEN      !Erosion of snow layer
+                    CALL snow_erosion (m_snow, H_abs_snow, thick_snow, dt, liquid_precip, T2m)
                 END IF
 
             ELSE IF (precip_flag==0) THEN
@@ -235,6 +237,8 @@ CONTAINS
                     test = thick_snow
                 ELSE IF (MAX(liquid_precip, solid_precip)>0.0_wp .AND. N_Active==1) THEN !Precip in water layer
                     CALL snow_precip_0 (H_abs(1), S_abs(1), m(1), T(1), dt, liquid_precip, T2m, solid_precip)
+                ELSE IF (MAX(liquid_precip, solid_precip)>0.0_wp .AND. N_Active>1) THEN !Erosion of snowlayer
+                    CALL snow_erosion (m_snow, H_abs_snow, thick_snow, dt, liquid_precip, T2m, solid_precip)
                 END IF
             END IF
 
@@ -330,12 +334,15 @@ CONTAINS
                     grav_drain = grav_drain / time_out
                 end if
 
+                grav_heat_flux_down = grav_heat_flux_down / time_out
+                grav_heat_flux_up = grav_heat_flux_up / time_out
+
                 !Calling standard output
                 CALL output(Nlayer, T, psi_s, psi_l, thick, S_bu, ray, format_T, format_psi, &
                         format_thick, format_snow, freeboard, thick_snow, T_snow, psi_l_snow, psi_s_snow, &
                         energy_stored, freshwater, total_resist, thickness, bulk_salin, &
                         grav_drain, grav_salt, grav_temp, T2m, T_top, perm, format_perm, flush_v, flush_h, psi_g, &
-                        & melt_thick_output, format_melt)
+                        & melt_thick_output, grav_heat_flux_down, grav_heat_flux_up, format_melt)
 
                 IF (bgc_flag==2) THEN
                     CALL output_bgc(Nlayer, N_active, bgc_bottom, N_bgc, bgc_abs, psi_l, thick, m, format_bgc)
@@ -355,6 +362,7 @@ CONTAINS
                         ',  T_snow:', T_snow, &
                         ',  T2m:', T2m
 
+
                 ! if you uncomment snow gt zero and flush, you need the following write statement:
                 ! WRITE(*,'(A10,I2,A15,F4.3,A12,F5.3,A14,F7.3,A30,F3.1,A14,F5.4,A16,L1,A10,F7.3,A7,F7.3,A10,A3)')&
                 flush_question = 'no!'
@@ -366,7 +374,9 @@ CONTAINS
                         'S_bu_bottom: ', s_bu_bottom, &
                         'T_top: ', T_top, &
                         'fl_sw: ', fl_sw, &
-                        'fl_rest; ', fl_rest
+                        'fl_rest; ', fl_rest, &
+						', Habs_top:', H_abs(2), &
+						', Habs_bot:', H_abs(N_active)
 
 
 
@@ -375,7 +385,8 @@ CONTAINS
                 grav_drain = 0.0_wp
                 grav_salt = 0.0_wp
                 grav_temp = 0.0_wp
-
+                grav_heat_flux_down = 0._wp
+                grav_heat_flux_up = 0._wp
                 melt_thick_output(:) = 0._wp
 
                 n_time_out = 0
@@ -452,11 +463,11 @@ CONTAINS
                 IF (bgc_flag == 2) THEN
                     CALL fl_grav_drain (S_br, S_bu, psi_l, psi_s, thick, S_abs, H_abs, T, m, dt, Nlayer, N_active, &
                             &ray, T_bottom, S_bu_bottom, grav_drain, grav_temp, grav_salt, &
-                            grav_heat_flag, harmonic_flag, fl_brine_bgc)
+                            grav_heat_flag, harmonic_flag, grav_heat_flux_down, grav_heat_flux_up, fl_brine_bgc)
                 ELSE
                     CALL fl_grav_drain (S_br, S_bu, psi_l, psi_s, thick, S_abs, H_abs, T, m, dt, Nlayer, N_active, &
                             &ray, T_bottom, S_bu_bottom, grav_drain, grav_temp, grav_salt, &
-                            grav_heat_flag, harmonic_flag)
+                            grav_heat_flag, harmonic_flag, grav_heat_flux_down, grav_heat_flux_up)
                 END IF
 
             ELSE IF (grav_flag==3 .AND. N_active>1) THEN
@@ -794,6 +805,8 @@ CONTAINS
         CLOSE(48)
         CLOSE(49)
         CLOSE(50)
+        CLOSE(51)
+        CLOSE(52)
         CLOSE(66)
 
         !Deallocating arrays