Index: LMDZ6/trunk/libf/phylmd/lscp_ini_mod.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/lscp_ini_mod.F90	(revision 4419)
+++ LMDZ6/trunk/libf/phylmd/lscp_ini_mod.F90	(revision 4420)
@@ -38,4 +38,7 @@
   !$OMP THREADPRIVATE(ok_radocond_snow)
 
+  LOGICAL, SAVE :: ok_debug_autoconversion=.true.   ! removes a bug in the autoconversion process
+  !$OMP THREADPRIVATE(ok_debug_autoconversion)
+
 
 CONTAINS
@@ -56,5 +59,6 @@
     CALL getin_p('rain_int_min',rain_int_min) 
     CALL getin_p('iflag_mpc_bl',iflag_mpc_bl)
-    CALL getin_p('ok_radocond_snow',ok_radocond_snow)         
+    CALL getin_p('ok_radocond_snow',ok_radocond_snow) 
+    CALL getin_p('ok_debug_autoconversion',ok_debug_autoconversion)    
     WRITE(lunout,*) 'lscp, ninter:', ninter
     WRITE(lunout,*) 'lscp, iflag_evap_prec:', iflag_evap_prec
@@ -63,5 +67,6 @@
     WRITE(lunout,*) 'lscp, iflag_mpc_bl:', iflag_mpc_bl
     WRITE(lunout,*) 'lscp, ok_radocond_snow:', ok_radocond_snow
-    
+    WRITE(lunout,*) 'lscp, ok_debug_autoconversion:', ok_debug_autoconversion
+
     ! check for precipitation sub-time steps
     IF (ABS(dtime/REAL(ninter)-360.0).GT.0.001) THEN
Index: LMDZ6/trunk/libf/phylmd/lscp_mod.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/lscp_mod.F90	(revision 4419)
+++ LMDZ6/trunk/libf/phylmd/lscp_mod.F90	(revision 4420)
@@ -93,5 +93,5 @@
 
 USE lscp_ini_mod, ONLY : seuil_neb, ninter, iflag_evap_prec, t_coup, DDT0, ztfondue, rain_int_min
-USE lscp_ini_mod, ONLY : iflag_mpc_bl, ok_radocond_snow, a_tr_sca
+USE lscp_ini_mod, ONLY : iflag_mpc_bl, ok_radocond_snow, a_tr_sca, ok_debug_autoconversion
 
 
@@ -962,4 +962,7 @@
                     zrain= 0.0
                 ELSE
+
+                    IF (ok_debug_autoconversion) THEN ! if condition to be removed after test phase
+
                     ! water quantity to remove: zchau (Sundqvist, 1978)
                     ! same thing for the ice: zfroi (Zender & Kiehl, 1997)
@@ -980,5 +983,4 @@
                     ! reduces the in-cloud water).
 
-
                     IF ((iflag_cloudth_vert.GE.3).AND.(iflag_rain_incloud_vol.EQ.1)) THEN
                         zchau = zct   *dtime/REAL(ninter) * zoliql(i) &
@@ -988,4 +990,35 @@
                         *(1.0-EXP(-(zoliql(i)/zneb(i)/zcl)**2))        ! dqliq/dt=-qliq/tau*(1-exp(-qcin/clw)**2)
                     ENDIF
+
+                    ELSE ! with old bug in autoconversion 
+
+                    ! water quantity to remove: zchau (Sundqvist, 1978)
+                    ! same thing for the ice: zfroi (Zender & Kiehl, 1997)
+                    IF (ptconv(i,k)) THEN ! if convective point
+                        zcl=cld_lc_con
+                        zct=1./cld_tau_con
+                        zfroi = dtime/REAL(ninter)/zdz(i)*zoliq(i)*velo(i,k)*zfice(i)
+                    ELSE
+                        zcl=cld_lc_lsc
+                        zct=1./cld_tau_lsc
+                        zfroi = dtime/REAL(ninter)/zdz(i)*zoliq(i) &   ! dqice/dt=1/rho*d(rho*wice*qice)/dz
+                            *velo(i,k) * zfice(i)
+                    ENDIF
+
+                    ! if vertical heterogeneity is taken into account, we use
+                    ! the "true" volume fraction instead of a modified 
+                    ! surface fraction (which is larger and artificially
+                    ! reduces the in-cloud water).
+
+
+                    IF ((iflag_cloudth_vert.GE.3).AND.(iflag_rain_incloud_vol.EQ.1)) THEN
+                        zchau = zct   *dtime/REAL(ninter) * zoliq(i) &
+                        *(1.0-EXP(-(zoliq(i)/ctot_vol(i,k)/zcl)**2)) *(1.-zfice(i))
+                    ELSE
+                        zchau = zct   *dtime/REAL(ninter) * zoliq(i) &
+                        *(1.0-EXP(-(zoliq(i)/zneb(i)/zcl)**2)) *(1.-zfice(i)) ! dqliq/dt=-qliq/tau*(1-exp(-qcin/clw)**2)
+                    ENDIF
+
+                    ENDIF ! ok_debug_autoconversion
 
                     zrain   = MIN(MAX(zchau,0.0),zoliql(i))
