diff --git a/src/MNH/default_desfmn.f90 b/src/MNH/default_desfmn.f90
index 51b902548ce2544ef0f8ee84e7409faab45b4fd0..1925ef8babb1dfc6ddf0c6293f5c50ae24bce862 100644
--- a/src/MNH/default_desfmn.f90
+++ b/src/MNH/default_desfmn.f90
@@ -275,24 +275,25 @@ USE MODD_EOL_SHARED_IO
 USE MODD_ALLSTATION_n
 !
 !
-USE MODD_PARAM_LIMA, ONLY : LCOLD, LNUCL, LSEDI, LHHONI, LSNOW, LHAIL, LMEYERS,       &
-                            NMOD_IFN, NMOM_I, XIFN_CONC, LIFN_HOM, CIFN_SPECIES,      &
-                            CINT_MIXING, NMOD_IMM, NIND_SPECIE, LMURAKAMI,            &
-                            YSNOW_T=>LSNOW_T, CPRISTINE_ICE_LIMA, CHEVRIMED_ICE_LIMA, &
-                            XFACTNUC_DEP, XFACTNUC_CON,                               &
-                            OWARM=>LWARM, LACTI, ORAIN=>LRAIN, OSEDC=>LSEDC,          &
-                            OACTIT=>LACTIT, LBOUND, LSPRO, LADJ, LKHKO,               &
-                            NMOD_CCN, XCCN_CONC,                                      &
-                            LCCN_HOM, CCCN_MODES,                                     &
-                            YALPHAR=>XALPHAR, YNUR=>XNUR,                             &
-                            YALPHAC=>XALPHAC, YNUC=>XNUC, CINI_CCN=>HINI_CCN,         &
-                            CTYPE_CCN=>HTYPE_CCN, YFSOLUB_CCN=>XFSOLUB_CCN,           &
-                            YACTEMP_CCN=>XACTEMP_CCN, YAERDIFF=>XAERDIFF,             &
-                            YAERHEIGHT=>XAERHEIGHT,                                   &
-                            LSCAV, LAERO_MASS, NPHILLIPS,                             &
-                            LCIBU, XNDEBRIS_CIBU, LRDSF,                              &
-                            ODEPOC=>LDEPOC, OVDEPOC=>XVDEPOC, OACTTKE=>LACTTKE,       &
-                            LPTSPLIT, L_LFEEDBACKT=>LFEEDBACKT, L_NMAXITER=>NMAXITER, &
+USE MODD_PARAM_LIMA, ONLY : LCOLD, LNUCL, LSEDI, LHHONI, LSNOW, LHAIL, LMEYERS,         &
+                            NMOM_I, NMOM_S, NMOM_G, NMOM_H,                             &
+                            NMOD_IFN, XIFN_CONC, LIFN_HOM, CIFN_SPECIES,                &
+                            CINT_MIXING, NMOD_IMM, NIND_SPECIE, LMURAKAMI,              &
+                            YSNOW_T=>LSNOW_T, CPRISTINE_ICE_LIMA, CHEVRIMED_ICE_LIMA,   &
+                            XFACTNUC_DEP, XFACTNUC_CON,                                 &
+                            OWARM=>LWARM, LACTI, ORAIN=>LRAIN, OSEDC=>LSEDC,            &
+                            OACTIT=>LACTIT, LBOUND, LSPRO, LADJ, LKHKO, NMOM_C, NMOM_R, &
+                            NMOD_CCN, XCCN_CONC,                                        &
+                            LCCN_HOM, CCCN_MODES,                                       &
+                            YALPHAR=>XALPHAR, YNUR=>XNUR,                               &
+                            YALPHAC=>XALPHAC, YNUC=>XNUC, CINI_CCN=>HINI_CCN,           &
+                            CTYPE_CCN=>HTYPE_CCN, YFSOLUB_CCN=>XFSOLUB_CCN,             &
+                            YACTEMP_CCN=>XACTEMP_CCN, YAERDIFF=>XAERDIFF,               &
+                            YAERHEIGHT=>XAERHEIGHT,                                     &
+                            LSCAV, LAERO_MASS, NPHILLIPS,                               &
+                            LCIBU, XNDEBRIS_CIBU, LRDSF,                                &
+                            ODEPOC=>LDEPOC, OVDEPOC=>XVDEPOC, OACTTKE=>LACTTKE,         &
+                            LPTSPLIT, L_LFEEDBACKT=>LFEEDBACKT, L_NMAXITER=>NMAXITER,   &
                             L_XMRSTEP=>XMRSTEP, L_XTSTEP_TS=>XTSTEP_TS
 !
 USE MODD_LATZ_EDFLX
@@ -983,71 +984,77 @@ IF (KMI == 1) THEN
    L_XMRSTEP    = 0.
    L_XTSTEP_TS  = 0.
 !
-  YNUC    = 1.0
-  YALPHAC = 3.0
-  YNUR    = 2.0
-  YALPHAR = 1.0
-!
-  OWARM  = .TRUE.
-  LACTI  = .TRUE.
-  ORAIN  = .TRUE.
-  OSEDC  = .TRUE.
-  OACTIT = .FALSE.
-  LADJ   = .TRUE.
-  LSPRO  = .FALSE.
-  LKHKO  = .FALSE.
-  ODEPOC = .FALSE.
-  LBOUND = .FALSE.
-  OACTTKE = .TRUE.
-!
-  OVDEPOC = 0.02 ! 2 cm/s
-!
-  CINI_CCN   = 'AER'
-  CTYPE_CCN(:) = 'M'
-!
-  YAERDIFF    = 0.0
-  YAERHEIGHT  = 2000.
+   YNUC    = 1.0
+   YALPHAC = 3.0
+   YNUR    = 2.0
+   YALPHAR = 1.0
+!
+   OWARM  = .TRUE.
+   LACTI  = .TRUE.
+   ORAIN  = .TRUE.
+   OSEDC  = .TRUE.
+   OACTIT = .FALSE.
+   LADJ   = .TRUE.
+   LSPRO  = .FALSE.
+   LKHKO  = .FALSE.
+   ODEPOC = .FALSE.
+   LBOUND = .FALSE.
+   OACTTKE = .TRUE.
+!
+   NMOM_C = 2
+   NMOM_R = 2
+!
+   OVDEPOC = 0.02 ! 2 cm/s
+!
+   CINI_CCN   = 'AER'
+   CTYPE_CCN(:) = 'M'
+!
+   YAERDIFF    = 0.0
+   YAERHEIGHT  = 2000.
 !  YR_MEAN_CCN = 0.0   ! In case of 'CCN' initialization
 !  YLOGSIG_CCN = 0.0
-  YFSOLUB_CCN = 1.0
-  YACTEMP_CCN = 280.
+   YFSOLUB_CCN = 1.0
+   YACTEMP_CCN = 280.
 !
-  NMOD_CCN = 1
+   NMOD_CCN = 1
 !
 !* AP Scavenging
 !
-  LSCAV      = .FALSE.
-  LAERO_MASS = .FALSE.
-!
-  LCCN_HOM = .TRUE.
-  CCCN_MODES = 'COPT'
-  XCCN_CONC(:)=300.
-
-  LHHONI = .FALSE.
-  LCOLD  = .TRUE.
-  LNUCL  = .TRUE.
-  LSEDI  = .TRUE.
-  LSNOW  = .TRUE.
-  LHAIL  = .FALSE.
-  YSNOW_T = .TRUE.
-  LMURAKAMI = .TRUE.
-  CPRISTINE_ICE_LIMA = 'PLAT'
-  CHEVRIMED_ICE_LIMA = 'GRAU'
-  XFACTNUC_DEP = 1.0  
-  XFACTNUC_CON = 1.0
-  NMOM_I = 2
-  NMOD_IFN = 1
-  NIND_SPECIE = 1
-  LMEYERS = .FALSE.
-  LIFN_HOM = .TRUE.
-  CIFN_SPECIES = 'PHILLIPS'
-  CINT_MIXING = 'DM2'
-  XIFN_CONC(:) = 100.
-  NMOD_IMM = 0
-  NPHILLIPS=8
-  LCIBU = .FALSE.
-  XNDEBRIS_CIBU = 50.0
-  LRDSF = .FALSE.
+   LSCAV      = .FALSE.
+   LAERO_MASS = .FALSE.
+!
+   LCCN_HOM = .TRUE.
+   CCCN_MODES = 'COPT'
+   XCCN_CONC(:)=300.
+!
+   LHHONI = .FALSE.
+   LCOLD  = .TRUE.
+   LNUCL  = .TRUE.
+   LSEDI  = .TRUE.
+   LSNOW  = .TRUE.
+   LHAIL  = .FALSE.
+   YSNOW_T = .TRUE.
+   LMURAKAMI = .TRUE.
+   CPRISTINE_ICE_LIMA = 'PLAT'
+   CHEVRIMED_ICE_LIMA = 'GRAU'
+   XFACTNUC_DEP = 1.0  
+   XFACTNUC_CON = 1.0
+   NMOM_I = 2
+   NMOM_S = 1
+   NMOM_G = 1
+   NMOM_H = 1
+   NMOD_IFN = 1
+   NIND_SPECIE = 1
+   LMEYERS = .FALSE.
+   LIFN_HOM = .TRUE.
+   CIFN_SPECIES = 'PHILLIPS'
+   CINT_MIXING = 'DM2'
+   XIFN_CONC(:) = 100.
+   NMOD_IMM = 0
+   NPHILLIPS=8
+   LCIBU = .FALSE.
+   XNDEBRIS_CIBU = 50.0
+   LRDSF = .FALSE.
 ENDIF
 !
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/ini_nsv.f90 b/src/MNH/ini_nsv.f90
index 9ea8633fc038654987a6994537da2f0b521c672e..2553d8ac8cd210470e3ae2b1af741a4eb36ab1d5 100644
--- a/src/MNH/ini_nsv.f90
+++ b/src/MNH/ini_nsv.f90
@@ -107,8 +107,9 @@ USE MODD_LUNIT_n,         ONLY: TLUOUT
 USE MODD_NSV
 USE MODD_PARAM_C2R2,      ONLY: LSUPSAT
 USE MODD_PARAM_LIMA,      ONLY: NINDICE_CCN_IMM, NIMM, NMOD_CCN, LSCAV, LAERO_MASS, &
-                                NMOD_IFN, NMOD_IMM, LHHONI,  &
-                                LWARM, LCOLD, LRAIN, LSPRO
+                                NMOD_IFN, NMOD_IMM, LHHONI, LSNOW, LHAIL, &
+                                LWARM, LCOLD, LRAIN, LSPRO,  &
+                                NMOM_C, NMOM_R, NMOM_I, NMOM_S, NMOM_G, NMOM_H
 USE MODD_PARAM_LIMA_COLD, ONLY: CLIMA_COLD_NAMES
 USE MODD_PARAM_LIMA_WARM, ONLY: CAERO_MASS, CLIMA_WARM_NAMES
 USE MODD_PARAM_n,         ONLY: CCLOUD, CELEC
@@ -193,16 +194,16 @@ END IF
 IF (CCLOUD == 'LIMA' ) THEN
    ISV = ISV+1
    NSV_LIMA_BEG_A(KMI) = ISV
-   IF (LWARM) THEN
+   IF (LWARM .AND. NMOM_C.GE.2) THEN
 ! Nc
       NSV_LIMA_NC_A(KMI) = ISV
       ISV = ISV+1
+   END IF
 ! Nr
-      IF (LRAIN) THEN
+      IF (LWARM .AND. LRAIN .AND. NMOM_R.GE.2) THEN
          NSV_LIMA_NR_A(KMI) = ISV
          ISV = ISV+1
       END IF
-   END IF ! LWARM
 ! CCN
    IF (NMOD_CCN .GT. 0) THEN
       NSV_LIMA_CCN_FREE_A(KMI) = ISV
@@ -214,13 +215,27 @@ IF (CCLOUD == 'LIMA' ) THEN
    IF (LSCAV .AND. LAERO_MASS) THEN
       NSV_LIMA_SCAVMASS_A(KMI) = ISV
       ISV = ISV+1
-   END IF ! LSCAV
-! 
-   IF (LCOLD) THEN
+   END IF
 ! Ni
+   IF (LCOLD .AND. NMOM_I.GE.2) THEN
       NSV_LIMA_NI_A(KMI) = ISV
       ISV = ISV+1
-   END IF ! LCOLD
+   END IF
+! Ns
+   IF (LCOLD .AND. LSNOW .AND. NMOM_S.GE.2) THEN
+      NSV_LIMA_NS_A(KMI) = ISV
+      ISV = ISV+1
+   END IF
+! Ng
+   IF (LCOLD .AND. LWARM .AND. LSNOW .AND. NMOM_G.GE.2) THEN
+      NSV_LIMA_NG_A(KMI) = ISV
+      ISV = ISV+1
+   END IF
+! Nh
+   IF (LCOLD .AND. LWARM .AND. LSNOW .AND. LHAIL .AND. NMOM_H.GE.2) THEN
+      NSV_LIMA_NH_A(KMI) = ISV
+      ISV = ISV+1
+   END IF
 ! IFN
    IF (NMOD_IFN .GT. 0) THEN
       NSV_LIMA_IFN_FREE_A(KMI) = ISV
@@ -233,7 +248,7 @@ IF (CCLOUD == 'LIMA' ) THEN
       NSV_LIMA_IMM_NUCL_A(KMI) = ISV
       ISV = ISV + MAX(1,NMOD_IMM)
    END IF
-
+!
   IF ( NMOD_IFN > 0 ) THEN
     IF ( .NOT. ALLOCATED( NIMM ) ) ALLOCATE( NIMM(NMOD_CCN) )
     NIMM(:) = 0
diff --git a/src/MNH/lima.f90 b/src/MNH/lima.f90
index 74d60c4ff3433b39da42c27bdef43af05e107777..218eee65ca22aa88d4ebd4f3dd416062779661a6 100644
--- a/src/MNH/lima.f90
+++ b/src/MNH/lima.f90
@@ -121,13 +121,14 @@ USE MODD_CST,             ONLY: XCI, XCL, XCPD, XCPV, XLSTT, XLVTT, XTT, XRHOLW,
 USE MODD_IO,              ONLY: TFILEDATA
 USE MODD_NSV,             ONLY: NSV_LIMA_BEG,                                                   &
                                 NSV_LIMA_NC, NSV_LIMA_NR, NSV_LIMA_CCN_FREE, NSV_LIMA_CCN_ACTI, &
-                                NSV_LIMA_NI, NSV_LIMA_IFN_FREE,                                 &
-                                NSV_LIMA_IFN_NUCL, NSV_LIMA_IMM_NUCL, NSV_LIMA_HOM_HAZE
+                                NSV_LIMA_NI, NSV_LIMA_NS, NSV_LIMA_NG, NSV_LIMA_NH,             &
+                                NSV_LIMA_IFN_FREE, NSV_LIMA_IFN_NUCL, NSV_LIMA_IMM_NUCL, NSV_LIMA_HOM_HAZE
 USE MODD_PARAMETERS,      ONLY: JPHEXT, JPVEXT
 USE MODD_PARAM_LIMA,      ONLY: LCOLD, LRAIN, LWARM, NMOD_CCN, NMOD_IFN, NMOD_IMM, LHHONI,      &
                                 LACTIT, LFEEDBACKT, NMAXITER, XMRSTEP, XTSTEP_TS,               &
                                 LSEDC, LSEDI, XRTMIN, XCTMIN, LDEPOC, XVDEPOC,                  &
-                                LHAIL, LSNOW
+                                LHAIL, LSNOW,                                                   &
+                                NMOM_C, NMOM_R, NMOM_I, NMOM_S, NMOM_G, NMOM_H
 USE MODD_PARAM_LIMA_COLD, ONLY: XAI, XBI
 USE MODD_PARAM_LIMA_WARM, ONLY: XLBC, XLBEXC, XAC, XBC, XAR, XBR
 USE MODD_TURB_n,          ONLY: LSUBG_COND
@@ -193,9 +194,9 @@ REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PPRCFR     ! Cloud fraction
 !
 ! Prognostic variables and sources
 REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3))      :: ZTHT, ZRVT, ZRCT, ZRRT, ZRIT, ZRST, ZRGT, ZRHT
-REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3))      :: ZCCT, ZCRT, ZCIT
+REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3))      :: ZCCT, ZCRT, ZCIT, ZCST, ZCGT, ZCHT
 REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3))      :: ZTHS, ZRVS, ZRCS, ZRRS, ZRIS, ZRSS, ZRGS, ZRHS
-REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3))      :: ZCCS, ZCRS, ZCIS
+REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3))      :: ZCCS, ZCRS, ZCIS, ZCSS, ZCGS, ZCHS
 REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3),NCCN) :: ZCCNFT, ZCCNAT
 REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3),NCCN) :: ZCCNFS, ZCCNAS
 REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3),NIFN) :: ZIFNFT, ZIFNNT
@@ -215,7 +216,7 @@ REAL, DIMENSION(:),   ALLOCATABLE ::                               &
      ZP1D, ZRHODREF1D, ZEXNREF1D, ZEXN1D,                          &
      ZTHT1D,                                                       &
      ZRVT1D, ZRCT1D, ZRRT1D, ZRIT1D, ZRST1D, ZRGT1D, ZRHT1D,       &
-     ZCCT1D, ZCRT1D, ZCIT1D,                                       &
+     ZCCT1D, ZCRT1D, ZCIT1D, ZCST1D, ZCGT1D, ZCHT1D,               &
      ZEVAP1D
 REAL, DIMENSION(:,:), ALLOCATABLE :: ZIFNN1D
 
@@ -268,8 +269,8 @@ REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3)) ::  &
 !
 ! Packed variables for total tendencies
 REAL, DIMENSION(:),   ALLOCATABLE ::                                              &
-     ZA_TH, ZA_RV, ZA_RC, ZA_CC, ZA_RR, ZA_CR, ZA_RI, ZA_CI, ZA_RS, ZA_RG, ZA_RH, & ! ZA = continuous tendencies (kg/kg/s = S variable)
-     ZB_TH, ZB_RV, ZB_RC, ZB_CC, ZB_RR, ZB_CR, ZB_RI, ZB_CI, ZB_RS, ZB_RG, ZB_RH    ! ZB = instant mixing ratio change (kg/kg = T variable)
+     ZA_TH, ZA_RV, ZA_RC, ZA_CC, ZA_RR, ZA_CR, ZA_RI, ZA_CI, ZA_RS, ZA_CS, ZA_RG, ZA_CG, ZA_RH, ZA_CH, & ! ZA = continuous tendencies (kg/kg/s = S variable)
+     ZB_TH, ZB_RV, ZB_RC, ZB_CC, ZB_RR, ZB_CR, ZB_RI, ZB_CI, ZB_RS, ZB_CS, ZB_RG, ZB_CG, ZB_RH, ZB_CH    ! ZB = instant mixing ratio change (kg/kg = T variable)
 REAL, DIMENSION(:,:), ALLOCATABLE :: ZB_IFNN
 
 !
@@ -396,6 +397,12 @@ ZCRT(:,:,:)   = 0.
 ZCRS(:,:,:)   = 0.
 ZCIT(:,:,:)   = 0.
 ZCIS(:,:,:)   = 0.
+ZCST(:,:,:)   = 0.
+ZCSS(:,:,:)   = 0.
+ZCGT(:,:,:)   = 0.
+ZCGS(:,:,:)   = 0.
+ZCHT(:,:,:)   = 0.
+ZCHS(:,:,:)   = 0.
 ZCCNFT(:,:,:,:) = 0.
 ZCCNAT(:,:,:,:) = 0.
 ZCCNFS(:,:,:,:) = 0.
@@ -541,12 +548,18 @@ IF ( KRR .GE. 7 ) ZRHS(:,:,:) = PRS(:,:,:,7)
 !
 ! Concentrations
 !
-IF ( LWARM )             ZCCT(:,:,:)   = PSVS(:,:,:,NSV_LIMA_NC) * PTSTEP
-IF ( LWARM )             ZCCS(:,:,:)   = PSVS(:,:,:,NSV_LIMA_NC)
-IF ( LWARM .AND. LRAIN ) ZCRT(:,:,:)   = PSVS(:,:,:,NSV_LIMA_NR) * PTSTEP
-IF ( LWARM .AND. LRAIN ) ZCRS(:,:,:)   = PSVS(:,:,:,NSV_LIMA_NR)
-IF ( LCOLD )             ZCIT(:,:,:)   = PSVS(:,:,:,NSV_LIMA_NI) * PTSTEP
-IF ( LCOLD )             ZCIS(:,:,:)   = PSVS(:,:,:,NSV_LIMA_NI)
+IF ( LWARM .AND. NMOM_C.GE.2)             ZCCT(:,:,:)   = PSVS(:,:,:,NSV_LIMA_NC) * PTSTEP
+IF ( LWARM .AND. NMOM_C.GE.2)             ZCCS(:,:,:)   = PSVS(:,:,:,NSV_LIMA_NC)
+IF ( LWARM .AND. LRAIN .AND. NMOM_R.GE.2) ZCRT(:,:,:)   = PSVS(:,:,:,NSV_LIMA_NR) * PTSTEP
+IF ( LWARM .AND. LRAIN .AND. NMOM_R.GE.2) ZCRS(:,:,:)   = PSVS(:,:,:,NSV_LIMA_NR)
+IF ( LCOLD .AND. NMOM_I.GE.2)             ZCIT(:,:,:)   = PSVS(:,:,:,NSV_LIMA_NI) * PTSTEP
+IF ( LCOLD .AND. NMOM_I.GE.2)             ZCIS(:,:,:)   = PSVS(:,:,:,NSV_LIMA_NI)
+IF ( LCOLD .AND. LSNOW .AND. NMOM_S.GE.2) ZCST(:,:,:)   = PSVS(:,:,:,NSV_LIMA_NS) * PTSTEP
+IF ( LCOLD .AND. LSNOW .AND. NMOM_S.GE.2) ZCSS(:,:,:)   = PSVS(:,:,:,NSV_LIMA_NS)
+IF ( LCOLD .AND. NMOM_G.GE.2)             ZCGT(:,:,:)   = PSVS(:,:,:,NSV_LIMA_NG) * PTSTEP
+IF ( LCOLD .AND. NMOM_G.GE.2)             ZCGS(:,:,:)   = PSVS(:,:,:,NSV_LIMA_NG)
+IF ( LCOLD .AND. NMOM_H.GE.2)             ZCHT(:,:,:)   = PSVS(:,:,:,NSV_LIMA_NH) * PTSTEP
+IF ( LCOLD .AND. NMOM_H.GE.2)             ZCHS(:,:,:)   = PSVS(:,:,:,NSV_LIMA_NH)
 !
 IF ( NMOD_CCN .GE. 1 )   ZCCNFT(:,:,:,:) = PSVS(:,:,:,NSV_LIMA_CCN_FREE:NSV_LIMA_CCN_FREE+NMOD_CCN-1) * PTSTEP
 IF ( NMOD_CCN .GE. 1 )   ZCCNAT(:,:,:,:) = PSVS(:,:,:,NSV_LIMA_CCN_ACTI:NSV_LIMA_CCN_ACTI+NMOD_CCN-1) * PTSTEP
@@ -664,27 +677,27 @@ end if
 ZRT_SUM = (ZRVS + ZRCS + ZRRS + ZRIS + ZRSS + ZRGS + ZRHS)*PTSTEP
 ZCPT    = XCPD + (XCPV * ZRVS + XCL * (ZRCS + ZRRS) + XCI * (ZRIS + ZRSS + ZRGS + ZRHS))*PTSTEP
 IF (LWARM .AND. LSEDC) CALL LIMA_SEDIMENTATION(IIB, IIE, IIT, IJB, IJE, IJT, IKB, IKE, IKTB, IKTE, IKT, KKL, &
-                                               'L', 2, 2, 1, PTSTEP, PDZZ, PRHODREF, PPABST, ZT, ZRT_SUM, ZCPT, ZRCS, ZCCS, PINPRC)
+     'L', NMOM_C, 2, 1, PTSTEP, PDZZ, PRHODREF, PPABST, ZT, ZRT_SUM, ZCPT, ZRCS, ZCCS, PINPRC)
 ZRT_SUM = (ZRVS + ZRCS + ZRRS + ZRIS + ZRSS + ZRGS + ZRHS)*PTSTEP
 ZCPT    = XCPD + (XCPV * ZRVS + XCL * (ZRCS + ZRRS) + XCI * (ZRIS + ZRSS + ZRGS + ZRHS))*PTSTEP
 IF (LWARM .AND. LRAIN) CALL LIMA_SEDIMENTATION(IIB, IIE, IIT, IJB, IJE, IJT, IKB, IKE, IKTB, IKTE, IKT, KKL, &
-                                               'L', 2, 3, 1, PTSTEP, PDZZ, PRHODREF, PPABST, ZT, ZRT_SUM, ZCPT, ZRRS, ZCRS, PINPRR)
+     'L', NMOM_R, 3, 1, PTSTEP, PDZZ, PRHODREF, PPABST, ZT, ZRT_SUM, ZCPT, ZRRS, ZCRS, PINPRR)
 ZRT_SUM = (ZRVS + ZRCS + ZRRS + ZRIS + ZRSS + ZRGS + ZRHS)*PTSTEP
 ZCPT    = XCPD + (XCPV * ZRVS + XCL * (ZRCS + ZRRS) + XCI * (ZRIS + ZRSS + ZRGS + ZRHS))*PTSTEP
 IF (LCOLD .AND. LSEDI) CALL LIMA_SEDIMENTATION(IIB, IIE, IIT, IJB, IJE, IJT, IKB, IKE, IKTB, IKTE, IKT, KKL, &
-                                               'I', 2, 4, 1, PTSTEP, PDZZ, PRHODREF, PPABST, ZT, ZRT_SUM, ZCPT, ZRIS, ZCIS, ZW2D)
+     'I', NMOM_I, 4, 1, PTSTEP, PDZZ, PRHODREF, PPABST, ZT, ZRT_SUM, ZCPT, ZRIS, ZCIS, ZW2D)
 ZRT_SUM = (ZRVS + ZRCS + ZRRS + ZRIS + ZRSS + ZRGS + ZRHS)*PTSTEP
 ZCPT    = XCPD + (XCPV * ZRVS + XCL * (ZRCS + ZRRS) + XCI * (ZRIS + ZRSS + ZRGS + ZRHS))*PTSTEP
 IF (LCOLD .AND. LSNOW) CALL LIMA_SEDIMENTATION(IIB, IIE, IIT, IJB, IJE, IJT, IKB, IKE, IKTB, IKTE, IKT, KKL, &
-                                               'I', 1, 5, 1, PTSTEP, PDZZ, PRHODREF, PPABST, ZT, ZRT_SUM, ZCPT, ZRSS, ZW3D, PINPRS)
+     'I', NMOM_S, 5, 1, PTSTEP, PDZZ, PRHODREF, PPABST, ZT, ZRT_SUM, ZCPT, ZRSS, ZCSS, PINPRS)
 ZRT_SUM = (ZRVS + ZRCS + ZRRS + ZRIS + ZRSS + ZRGS + ZRHS)*PTSTEP
 ZCPT    = XCPD + (XCPV * ZRVS + XCL * (ZRCS + ZRRS) + XCI * (ZRIS + ZRSS + ZRGS + ZRHS))*PTSTEP
 IF (LCOLD .AND. LSNOW) CALL LIMA_SEDIMENTATION(IIB, IIE, IIT, IJB, IJE, IJT, IKB, IKE, IKTB, IKTE, IKT, KKL, &
-                                               'I', 1, 6, 1, PTSTEP, PDZZ, PRHODREF, PPABST, ZT, ZRT_SUM, ZCPT, ZRGS, ZW3D, PINPRG)
+     'I', NMOM_G, 6, 1, PTSTEP, PDZZ, PRHODREF, PPABST, ZT, ZRT_SUM, ZCPT, ZRGS, ZCGS, PINPRG)
 ZRT_SUM = (ZRVS + ZRCS + ZRRS + ZRIS + ZRSS + ZRGS + ZRHS)*PTSTEP
 ZCPT    = XCPD + (XCPV * ZRVS + XCL * (ZRCS + ZRRS) + XCI * (ZRIS + ZRSS + ZRGS + ZRHS))*PTSTEP
 IF (LCOLD .AND. LHAIL) CALL LIMA_SEDIMENTATION(IIB, IIE, IIT, IJB, IJE, IJT, IKB, IKE, IKTB, IKTE, IKT, KKL, &
-                                               'I', 1, 7, 1, PTSTEP, PDZZ, PRHODREF, PPABST, ZT, ZRT_SUM, ZCPT, ZRHS, ZW3D, PINPRH)
+     'I', NMOM_H, 7, 1, PTSTEP, PDZZ, PRHODREF, PPABST, ZT, ZRT_SUM, ZCPT, ZRHS, ZCHS, PINPRH)
 !
 ZTHS(:,:,:) = ZT(:,:,:) / ZEXN(:,:,:) * ZINV_TSTEP
 !
@@ -767,9 +780,12 @@ IF ( KRR .GE. 5 ) ZRST(:,:,:) = ZRSS(:,:,:) * PTSTEP
 IF ( KRR .GE. 6 ) ZRGT(:,:,:) = ZRGS(:,:,:) * PTSTEP
 IF ( KRR .GE. 7 ) ZRHT(:,:,:) = ZRHS(:,:,:) * PTSTEP
 !
-IF ( LWARM )             ZCCT(:,:,:)   = ZCCS(:,:,:) * PTSTEP
-IF ( LWARM .AND. LRAIN ) ZCRT(:,:,:)   = ZCRS(:,:,:) * PTSTEP
-IF ( LCOLD )             ZCIT(:,:,:)   = ZCIS(:,:,:) * PTSTEP
+IF ( LWARM .AND. NMOM_C.GE.2 )             ZCCT(:,:,:)   = ZCCS(:,:,:) * PTSTEP
+IF ( LWARM .AND. LRAIN .AND. NMOM_R.GE.2 ) ZCRT(:,:,:)   = ZCRS(:,:,:) * PTSTEP
+IF ( LCOLD .AND. NMOM_I.GE.2 )             ZCIT(:,:,:)   = ZCIS(:,:,:) * PTSTEP
+IF ( LCOLD .AND. NMOM_S.GE.2 )             ZCST(:,:,:)   = ZCSS(:,:,:) * PTSTEP
+IF ( LCOLD .AND. NMOM_G.GE.2 )             ZCGT(:,:,:)   = ZCGS(:,:,:) * PTSTEP
+IF ( LCOLD .AND. NMOM_H.GE.2 )             ZCHT(:,:,:)   = ZCHS(:,:,:) * PTSTEP
 ! 
 !-------------------------------------------------------------------------------
 !
@@ -780,7 +796,9 @@ CALL LIMA_COMPUTE_CLOUD_FRACTIONS (IIB, IIE, IJB, IJE, IKB, IKE, KKL, &
                                    ZCCT, ZRCT,                        &
                                    ZCRT, ZRRT,                        &
                                    ZCIT, ZRIT,                        &
-                                   ZRST, ZRGT, ZRHT,                  &
+                                   ZCST, ZRST,                        &
+                                   ZCGT, ZRGT,                        &
+                                   ZCHT, ZRHT,                        &
                                    PCLDFR, PICEFR, PPRCFR             )
 !
 !-------------------------------------------------------------------------------
@@ -805,9 +823,12 @@ ZRSS(:,:,:) = ZRST(:,:,:) *ZINV_TSTEP
 ZRGS(:,:,:) = ZRGT(:,:,:) *ZINV_TSTEP
 ZRHS(:,:,:) = ZRHT(:,:,:) *ZINV_TSTEP
 !
-ZCCS(:,:,:) = ZCCT(:,:,:) *ZINV_TSTEP
-ZCRS(:,:,:) = ZCRT(:,:,:) *ZINV_TSTEP
-ZCIS(:,:,:) = ZCIT(:,:,:) *ZINV_TSTEP
+IF (NMOM_C.GE.2) ZCCS(:,:,:) = ZCCT(:,:,:) *ZINV_TSTEP
+IF (NMOM_R.GE.2) ZCRS(:,:,:) = ZCRT(:,:,:) *ZINV_TSTEP
+IF (NMOM_I.GE.2) ZCIS(:,:,:) = ZCIT(:,:,:) *ZINV_TSTEP
+IF (NMOM_S.GE.2) ZCSS(:,:,:) = ZCST(:,:,:) *ZINV_TSTEP
+IF (NMOM_G.GE.2) ZCGS(:,:,:) = ZCGT(:,:,:) *ZINV_TSTEP
+IF (NMOM_H.GE.2) ZCHS(:,:,:) = ZCHT(:,:,:) *ZINV_TSTEP
 !
 ZCCNFS(:,:,:,:) = ZCCNFT(:,:,:,:) *ZINV_TSTEP
 ZCCNAS(:,:,:,:) = ZCCNAT(:,:,:,:) *ZINV_TSTEP
@@ -891,6 +912,9 @@ DO WHILE(ANY(ZTIME(IIB:IIE,IJB:IJE,IKTB:IKTE)<PTSTEP))
       ALLOCATE(ZCCT1D(IPACK))
       ALLOCATE(ZCRT1D(IPACK))
       ALLOCATE(ZCIT1D(IPACK))
+      ALLOCATE(ZCST1D(IPACK))
+      ALLOCATE(ZCGT1D(IPACK))
+      ALLOCATE(ZCHT1D(IPACK))
       ALLOCATE(ZIFNN1D(IPACK,NMOD_IFN))
       ALLOCATE(ZEVAP1D(IPACK))
       ALLOCATE(ZTIME1D(IPACK))
@@ -924,6 +948,9 @@ DO WHILE(ANY(ZTIME(IIB:IIE,IJB:IJE,IKTB:IKTE)<PTSTEP))
          ZCCT1D(II)           = ZCCT(I1(II),I2(II),I3(II))
          ZCRT1D(II)           = ZCRT(I1(II),I2(II),I3(II))
          ZCIT1D(II)           = ZCIT(I1(II),I2(II),I3(II))
+         ZCST1D(II)           = ZCST(I1(II),I2(II),I3(II))
+         ZCGT1D(II)           = ZCGT(I1(II),I2(II),I3(II))
+         ZCHT1D(II)           = ZCHT(I1(II),I2(II),I3(II))
          ZIFNN1D(II,:)        = ZIFNNT(I1(II),I2(II),I3(II),:)
          ZEVAP1D(II)          = PEVAP3D(I1(II),I2(II),I3(II))
          ZTIME1D(II)          = ZTIME(I1(II),I2(II),I3(II))         
@@ -944,8 +971,10 @@ DO WHILE(ANY(ZTIME(IIB:IIE,IJB:IJE,IKTB:IKTE)<PTSTEP))
       !
       WHERE(ZCF1D(:)<1.E-10 .AND. ZRCT1D(:)>XRTMIN(2) .AND. ZCCT1D(:)>XCTMIN(2)) ZCF1D(:)=1.
       WHERE(ZIF1D(:)<1.E-10 .AND. ZRIT1D(:)>XRTMIN(4) .AND. ZCIT1D(:)>XCTMIN(4)) ZIF1D(:)=1.
-      WHERE(ZPF1D(:)<1.E-10 .AND. (ZRRT1D(:)>XRTMIN(3) .OR. ZRST1D(:)>XRTMIN(5) &
-                              .OR. ZRGT1D(:)>XRTMIN(6) .OR. ZRHT1D(:)>XRTMIN(7) ) ) ZPF1D(:)=1.
+      WHERE(ZPF1D(:)<1.E-10 .AND. ZRRT1D(:)>XRTMIN(3) .AND. ZCRT1D(:)>XCTMIN(3)) ZPF1D(:)=1.
+      WHERE(ZPF1D(:)<1.E-10 .AND. ZRST1D(:)>XRTMIN(5) .AND. ZCST1D(:)>XCTMIN(5)) ZPF1D(:)=1.
+      WHERE(ZPF1D(:)<1.E-10 .AND. ZRGT1D(:)>XRTMIN(6) .AND. ZCGT1D(:)>XCTMIN(6)) ZPF1D(:)=1.
+      WHERE(ZPF1D(:)<1.E-10 .AND. ZRHT1D(:)>XRTMIN(7) .AND. ZCHT1D(:)>XCTMIN(7)) ZPF1D(:)=1.
       !
       ! Allocating 1D variables
       !
@@ -963,6 +992,9 @@ DO WHILE(ANY(ZTIME(IIB:IIE,IJB:IJE,IKTB:IKTE)<PTSTEP))
       ALLOCATE(ZA_CC(IPACK))              ;  ZA_CC(:) = 0.
       ALLOCATE(ZA_CR(IPACK))              ;  ZA_CR(:) = 0.
       ALLOCATE(ZA_CI(IPACK))              ;  ZA_CI(:) = 0.
+      ALLOCATE(ZA_CS(IPACK))              ;  ZA_CS(:) = 0.
+      ALLOCATE(ZA_CG(IPACK))              ;  ZA_CG(:) = 0.
+      ALLOCATE(ZA_CH(IPACK))              ;  ZA_CH(:) = 0.
       !
       ALLOCATE(ZB_TH(IPACK))              ;  ZB_TH(:) = 0.
       ALLOCATE(ZB_RV(IPACK))              ;  ZB_RV(:) = 0.
@@ -975,6 +1007,9 @@ DO WHILE(ANY(ZTIME(IIB:IIE,IJB:IJE,IKTB:IKTE)<PTSTEP))
       ALLOCATE(ZB_CC(IPACK))              ;  ZB_CC(:) = 0.
       ALLOCATE(ZB_CR(IPACK))              ;  ZB_CR(:) = 0.
       ALLOCATE(ZB_CI(IPACK))              ;  ZB_CI(:) = 0.
+      ALLOCATE(ZB_CS(IPACK))              ;  ZB_CS(:) = 0.
+      ALLOCATE(ZB_CG(IPACK))              ;  ZB_CG(:) = 0.
+      ALLOCATE(ZB_CH(IPACK))              ;  ZB_CH(:) = 0.
       ALLOCATE(ZB_IFNN(IPACK,NMOD_IFN))   ;  ZB_IFNN(:,:) = 0.
       !
       ALLOCATE(Z_CR_BRKU(IPACK))          ; Z_CR_BRKU(:) = 0.
@@ -1269,14 +1304,17 @@ DO WHILE(ANY(ZTIME(IIB:IIE,IJB:IJE,IKTB:IKTE)<PTSTEP))
       ZTHT1D = ZTHT1D + ZA_TH(:) * ZMAXTIME(:) + ZB_TH(:)
       ZRVT1D = ZRVT1D + ZA_RV(:) * ZMAXTIME(:) + ZB_RV(:)
       ZRCT1D = ZRCT1D + ZA_RC(:) * ZMAXTIME(:) + ZB_RC(:)
-      ZCCT1D = ZCCT1D + ZA_CC(:) * ZMAXTIME(:) + ZB_CC(:)
+      IF (NMOM_C.GE.2) ZCCT1D = ZCCT1D + ZA_CC(:) * ZMAXTIME(:) + ZB_CC(:)
       ZRRT1D = ZRRT1D + ZA_RR(:) * ZMAXTIME(:) + ZB_RR(:)
-      ZCRT1D = ZCRT1D + ZA_CR(:) * ZMAXTIME(:) + ZB_CR(:)
+      IF (NMOM_R.GE.2) ZCRT1D = ZCRT1D + ZA_CR(:) * ZMAXTIME(:) + ZB_CR(:)
       ZRIT1D = ZRIT1D + ZA_RI(:) * ZMAXTIME(:) + ZB_RI(:)
-      ZCIT1D = ZCIT1D + ZA_CI(:) * ZMAXTIME(:) + ZB_CI(:)
+      IF (NMOM_I.GE.2) ZCIT1D = ZCIT1D + ZA_CI(:) * ZMAXTIME(:) + ZB_CI(:)
       ZRST1D = ZRST1D + ZA_RS(:) * ZMAXTIME(:) + ZB_RS(:)
+      IF (NMOM_S.GE.2) ZCST1D = ZCST1D + ZA_CS(:) * ZMAXTIME(:) + ZB_CS(:)
       ZRGT1D = ZRGT1D + ZA_RG(:) * ZMAXTIME(:) + ZB_RG(:)
+      IF (NMOM_G.GE.2) ZCGT1D = ZCGT1D + ZA_CG(:) * ZMAXTIME(:) + ZB_CG(:)
       ZRHT1D = ZRHT1D + ZA_RH(:) * ZMAXTIME(:) + ZB_RH(:)
+      IF (NMOM_H.GE.2) ZCHT1D = ZCHT1D + ZA_CH(:) * ZMAXTIME(:) + ZB_CH(:)
       !
       DO II=1,NMOD_IFN
          ZIFNN1D(:,II) = ZIFNN1D(:,II) + ZB_IFNN(:,II)
@@ -1310,8 +1348,7 @@ DO WHILE(ANY(ZTIME(IIB:IIE,IJB:IJE,IKTB:IKTE)<PTSTEP))
          ZRVT1D = ZRVT1D + ZRIT1D
          ZRIT1D = 0.
          ZCIT1D = 0.
-      END WHERE
-      
+      END WHERE      
       !
       !***       4.5 Next loop
       !
@@ -1328,9 +1365,12 @@ DO WHILE(ANY(ZTIME(IIB:IIE,IJB:IJE,IKTB:IKTE)<PTSTEP))
          ZRST(I1(II),I2(II),I3(II))      = ZRST1D(II)
          ZRGT(I1(II),I2(II),I3(II))      = ZRGT1D(II)
          ZRHT(I1(II),I2(II),I3(II))      = ZRHT1D(II)
-         ZCCT(I1(II),I2(II),I3(II))      = ZCCT1D(II)
-         ZCRT(I1(II),I2(II),I3(II))      = ZCRT1D(II)
-         ZCIT(I1(II),I2(II),I3(II))      = ZCIT1D(II)
+         IF (NMOM_C.GE.2) ZCCT(I1(II),I2(II),I3(II))      = ZCCT1D(II)
+         IF (NMOM_R.GE.2) ZCRT(I1(II),I2(II),I3(II))      = ZCRT1D(II)
+         IF (NMOM_I.GE.2) ZCIT(I1(II),I2(II),I3(II))      = ZCIT1D(II)
+         IF (NMOM_S.GE.2) ZCST(I1(II),I2(II),I3(II))      = ZCST1D(II)
+         IF (NMOM_G.GE.2) ZCGT(I1(II),I2(II),I3(II))      = ZCGT1D(II)
+         IF (NMOM_H.GE.2) ZCHT(I1(II),I2(II),I3(II))      = ZCHT1D(II)
          ZIFNNT(I1(II),I2(II),I3(II),:)  = ZIFNN1D(II,:)
          PEVAP3D(I1(II),I2(II),I3(II))   = ZEVAP1D(II)
          ZTIME(I1(II),I2(II),I3(II))     = ZTIME1D(II)
@@ -1338,12 +1378,14 @@ DO WHILE(ANY(ZTIME(IIB:IIE,IJB:IJE,IKTB:IKTE)<PTSTEP))
          IITER(I1(II),I2(II),I3(II))     = IITER1D(II)
       END DO
       !
-      CALL LIMA_DROPS_TO_DROPLETS_CONV(PRHODREF, ZRCT, ZRRT, ZCCT, ZCRT, &
-                                       Z_RR_CVRC, Z_CR_CVRC    )
-      ZRCT(:,:,:) = ZRCT(:,:,:) - Z_RR_CVRC(:,:,:)
-      ZRRT(:,:,:) = ZRRT(:,:,:) + Z_RR_CVRC(:,:,:)
-      ZCCT(:,:,:) = ZCCT(:,:,:) - Z_CR_CVRC(:,:,:)
-      ZCRT(:,:,:) = ZCRT(:,:,:) + Z_CR_CVRC(:,:,:)
+      IF (NMOM_C.GE.2 .AND. NMOM_R.GE.2) THEN
+         CALL LIMA_DROPS_TO_DROPLETS_CONV(PRHODREF, ZRCT, ZRRT, ZCCT, ZCRT, &
+              Z_RR_CVRC, Z_CR_CVRC    )
+         ZRCT(:,:,:) = ZRCT(:,:,:) - Z_RR_CVRC(:,:,:)
+         ZRRT(:,:,:) = ZRRT(:,:,:) + Z_RR_CVRC(:,:,:)
+         ZCCT(:,:,:) = ZCCT(:,:,:) - Z_CR_CVRC(:,:,:)
+         ZCRT(:,:,:) = ZCRT(:,:,:) + Z_CR_CVRC(:,:,:)
+      END IF
       !
       !***       4.4 Unpacking for budgets
       !
@@ -1486,6 +1528,9 @@ DO WHILE(ANY(ZTIME(IIB:IIE,IJB:IJE,IKTB:IKTE)<PTSTEP))
       DEALLOCATE(ZCCT1D)
       DEALLOCATE(ZCRT1D)
       DEALLOCATE(ZCIT1D)
+      DEALLOCATE(ZCST1D)
+      DEALLOCATE(ZCGT1D)
+      DEALLOCATE(ZCHT1D)
       DEALLOCATE(ZIFNN1D)
       DEALLOCATE(ZEVAP1D)
       DEALLOCATE(ZTIME1D)
@@ -1517,6 +1562,9 @@ DO WHILE(ANY(ZTIME(IIB:IIE,IJB:IJE,IKTB:IKTE)<PTSTEP))
       DEALLOCATE(ZA_CC)
       DEALLOCATE(ZA_CR)
       DEALLOCATE(ZA_CI)
+      DEALLOCATE(ZA_CS)
+      DEALLOCATE(ZA_CG)
+      DEALLOCATE(ZA_CH)
       !
       DEALLOCATE(ZB_TH)
       DEALLOCATE(ZB_RV)   
@@ -1529,6 +1577,9 @@ DO WHILE(ANY(ZTIME(IIB:IIE,IJB:IJE,IKTB:IKTE)<PTSTEP))
       DEALLOCATE(ZB_CC)   
       DEALLOCATE(ZB_CR)  
       DEALLOCATE(ZB_CI)  
+      DEALLOCATE(ZB_CS)  
+      DEALLOCATE(ZB_CG)  
+      DEALLOCATE(ZB_CH)  
       DEALLOCATE(ZB_IFNN)
       !
       DEALLOCATE(Z_CR_BRKU)
@@ -1642,9 +1693,12 @@ IF ( KRR .GE. 5 ) PRS(:,:,:,5) = ZRST(:,:,:) *ZINV_TSTEP
 IF ( KRR .GE. 6 ) PRS(:,:,:,6) = ZRGT(:,:,:) *ZINV_TSTEP
 IF ( KRR .GE. 7 ) PRS(:,:,:,7) = ZRHT(:,:,:) *ZINV_TSTEP
 !
-IF ( LWARM )             PSVS(:,:,:,NSV_LIMA_NC) = ZCCT(:,:,:) *ZINV_TSTEP
-IF ( LWARM .AND. LRAIN ) PSVS(:,:,:,NSV_LIMA_NR) = ZCRT(:,:,:) *ZINV_TSTEP
-IF ( LCOLD )             PSVS(:,:,:,NSV_LIMA_NI) = ZCIT(:,:,:) *ZINV_TSTEP
+IF ( LWARM .AND. NMOM_C.GE.2 )             PSVS(:,:,:,NSV_LIMA_NC) = ZCCT(:,:,:) *ZINV_TSTEP
+IF ( LWARM .AND. LRAIN .AND. NMOM_R.GE.2 ) PSVS(:,:,:,NSV_LIMA_NR) = ZCRT(:,:,:) *ZINV_TSTEP
+IF ( LCOLD .AND. NMOM_I.GE.2 )             PSVS(:,:,:,NSV_LIMA_NI) = ZCIT(:,:,:) *ZINV_TSTEP
+IF ( LCOLD .AND. NMOM_S.GE.2 )             PSVS(:,:,:,NSV_LIMA_NS) = ZCST(:,:,:) *ZINV_TSTEP
+IF ( LCOLD .AND. NMOM_G.GE.2 )             PSVS(:,:,:,NSV_LIMA_NG) = ZCGT(:,:,:) *ZINV_TSTEP
+IF ( LCOLD .AND. NMOM_H.GE.2 )             PSVS(:,:,:,NSV_LIMA_NH) = ZCHT(:,:,:) *ZINV_TSTEP
 !
 IF ( NMOD_CCN .GE. 1 )   PSVS(:,:,:,NSV_LIMA_CCN_FREE:NSV_LIMA_CCN_FREE+NMOD_CCN-1) = ZCCNFT(:,:,:,:) *ZINV_TSTEP
 IF ( NMOD_CCN .GE. 1 )   PSVS(:,:,:,NSV_LIMA_CCN_ACTI:NSV_LIMA_CCN_ACTI+NMOD_CCN-1) = ZCCNAT(:,:,:,:) *ZINV_TSTEP
diff --git a/src/MNH/lima_compute_cloud_fractions.f90 b/src/MNH/lima_compute_cloud_fractions.f90
index ce1cedeeef9b7b72c85bd9b4828619ca1fc6a8aa..54063eb651eaa0c0f648feb148f371252fe847da 100644
--- a/src/MNH/lima_compute_cloud_fractions.f90
+++ b/src/MNH/lima_compute_cloud_fractions.f90
@@ -11,7 +11,9 @@ MODULE MODI_LIMA_COMPUTE_CLOUD_FRACTIONS
                                               PCCT, PRCT,                        &
                                               PCRT, PRRT,                        &
                                               PCIT, PRIT,                        &
-                                              PRST, PRGT, PRHT,                  &
+                                              PCST, PRST,                        &
+                                              PCGT, PRGT,                        &
+                                              PCHT, PRHT,                        &
                                               PCLDFR, PICEFR, PPRCFR             )
        INTEGER,               INTENT(IN)    :: KIB           !  
        INTEGER,               INTENT(IN)    :: KIE           !  
@@ -30,8 +32,13 @@ MODULE MODI_LIMA_COMPUTE_CLOUD_FRACTIONS
        REAL, DIMENSION(:,:,:),INTENT(IN)    :: PCIT          !
        REAL, DIMENSION(:,:,:),INTENT(IN)    :: PRIT          !
        !
+       REAL, DIMENSION(:,:,:),INTENT(IN)    :: PCST          !
        REAL, DIMENSION(:,:,:),INTENT(IN)    :: PRST          !
+       !
+       REAL, DIMENSION(:,:,:),INTENT(IN)    :: PCGT          !
        REAL, DIMENSION(:,:,:),INTENT(IN)    :: PRGT          !
+       !
+       REAL, DIMENSION(:,:,:),INTENT(IN)    :: PCHT          !
        REAL, DIMENSION(:,:,:),INTENT(IN)    :: PRHT          !
        !
        REAL, DIMENSION(:,:,:),INTENT(INOUT) :: PCLDFR        ! 
@@ -48,7 +55,9 @@ SUBROUTINE LIMA_COMPUTE_CLOUD_FRACTIONS (KIB, KIE, KJB, KJE, KKB, KKE, KKL, &
                                          PCCT, PRCT,                        &
                                          PCRT, PRRT,                        &
                                          PCIT, PRIT,                        &
-                                         PRST, PRGT, PRHT,                  &
+                                         PCST, PRST,                        &
+                                         PCGT, PRGT,                        &
+                                         PCHT, PRHT,                        &
                                          PCLDFR, PICEFR, PPRCFR             )
 !################################################################
 !
@@ -70,7 +79,8 @@ SUBROUTINE LIMA_COMPUTE_CLOUD_FRACTIONS (KIB, KIE, KJB, KJE, KKB, KKE, KKL, &
 !*       0.    DECLARATIONS
 !              ------------
 !
-USE MODD_PARAM_LIMA,      ONLY : XCTMIN, XRTMIN
+USE MODD_PARAM_LIMA,      ONLY : XCTMIN, XRTMIN, &
+                                 NMOM_C, NMOM_R, NMOM_I, NMOM_S, NMOM_G, NMOM_H
 !
 IMPLICIT NONE
 !
@@ -93,8 +103,13 @@ REAL, DIMENSION(:,:,:),INTENT(IN)    :: PRRT          !
 REAL, DIMENSION(:,:,:),INTENT(IN)    :: PCIT          !
 REAL, DIMENSION(:,:,:),INTENT(IN)    :: PRIT          !
 !
+REAL, DIMENSION(:,:,:),INTENT(IN)    :: PCST          !
 REAL, DIMENSION(:,:,:),INTENT(IN)    :: PRST          !
+!
+REAL, DIMENSION(:,:,:),INTENT(IN)    :: PCGT          !
 REAL, DIMENSION(:,:,:),INTENT(IN)    :: PRGT          !
+!
+REAL, DIMENSION(:,:,:),INTENT(IN)    :: PCHT          !
 REAL, DIMENSION(:,:,:),INTENT(IN)    :: PRHT          !
 !
 REAL, DIMENSION(:,:,:),INTENT(INOUT) :: PCLDFR        ! 
@@ -111,11 +126,11 @@ INTEGER :: JI, JJ, JK
 !              ---------------
 !
 ! Liquid cloud fraction is kept from input data, except where PCLDFR=0 and rc>0
-WHERE(PCLDFR(:,:,:)<1.E-10 .AND. PRCT(:,:,:)>XRTMIN(2) .AND. PCCT(:,:,:)>XCTMIN(2)) PCLDFR(:,:,:)=1.
+WHERE(PCLDFR(:,:,:)<1.E-10 .AND. PRCT(:,:,:)>XRTMIN(2) .AND. (NMOM_C.EQ.1 .OR. PCCT(:,:,:)>XCTMIN(2))) PCLDFR(:,:,:)=1.
 !
 ! Ice cloud fraction is currently 0 or 1
 PICEFR(:,:,:)=0.
-WHERE(PICEFR(:,:,:)<1.E-10 .AND. PRIT(:,:,:)>XRTMIN(4) .AND. PCIT(:,:,:)>XCTMIN(4)) PICEFR(:,:,:)=1.
+WHERE(PICEFR(:,:,:)<1.E-10 .AND. PRIT(:,:,:)>XRTMIN(4) .AND. (NMOM_I.EQ.1 .OR. PCIT(:,:,:)>XCTMIN(4))) PICEFR(:,:,:)=1.
 !
 ! Precipitation fraction
 !!$PPRCFR(:,:,:) = MAX(PCLDFR(:,:,:),PICEFR(:,:,:))
@@ -163,10 +178,10 @@ WHERE(PICEFR(:,:,:)<1.E-10 .AND. PRIT(:,:,:)>XRTMIN(4) .AND. PCIT(:,:,:)>XCTMIN(
 !!$         PRHT(:,:,:).GT.XRTMIN(7)                                      )  PPRCFR(:,:,:) = 1.
 !!$
 PPRCFR(:,:,:) = 0.
-WHERE ( (PRRT(:,:,:).GT.0. .AND. PCRT(:,:,:).GT.0.) .OR. &
-         PRST(:,:,:).GT.0.                          .OR. &
-         PRGT(:,:,:).GT.0.                          .OR. &
-         PRHT(:,:,:).GT.0.                               )  PPRCFR(:,:,:) = 1.
+WHERE ( (PRRT(:,:,:).GT.0. .AND. (NMOM_R.EQ.1 .OR. PCRT(:,:,:).GT.0.) ) .OR. &
+        (PRST(:,:,:).GT.0. .AND. (NMOM_R.EQ.1 .OR. PCST(:,:,:).GT.0.) ) .OR. &
+        (PRGT(:,:,:).GT.0. .AND. (NMOM_R.EQ.1 .OR. PCGT(:,:,:).GT.0.) ) .OR. &
+        (PRHT(:,:,:).GT.0. .AND. (NMOM_R.EQ.1 .OR. PCHT(:,:,:).GT.0.) ) )  PPRCFR(:,:,:) = 1.
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/lima_inst_procs.f90 b/src/MNH/lima_inst_procs.f90
index ce7a127815611c7cd97b37c3c2d51c91665fb0e1..6a5aa149ea7368975e06dead5a299fc9e96d8226 100644
--- a/src/MNH/lima_inst_procs.f90
+++ b/src/MNH/lima_inst_procs.f90
@@ -102,7 +102,7 @@ SUBROUTINE LIMA_INST_PROCS (PTSTEP, LDCOMPUTE,
 !-------------------------------------------------------------------------------
 !
 !
-USE MODD_PARAM_LIMA, ONLY : LCOLD, LWARM, LRAIN
+USE MODD_PARAM_LIMA, ONLY : LCOLD, LWARM, LRAIN, NMOM_R
 !
 USE MODI_LIMA_DROPS_BREAK_UP
 USE MODI_LIMA_DROPS_HOM_FREEZING
@@ -159,7 +159,7 @@ REAL, DIMENSION(:)  , INTENT(INOUT) :: PPF1D      ! Precipitation fraction
 !
 !-------------------------------------------------------------------------------
 !
-IF (LWARM .AND. LRAIN) THEN
+IF (LWARM .AND. LRAIN .AND. NMOM_R.GE.2) THEN
    CALL LIMA_DROPS_BREAK_UP (LDCOMPUTE,    & ! no dependance on CF, IF or PF
                              PCRT, PRRT,   &
                              P_CR_BRKU,    &
diff --git a/src/MNH/lima_nucleation_procs.f90 b/src/MNH/lima_nucleation_procs.f90
index b28c91cb6cabe68aaecef7a782fba5e1038cc24d..9adbd24ec93b421c57d597bd01ac012e6063c9e8 100644
--- a/src/MNH/lima_nucleation_procs.f90
+++ b/src/MNH/lima_nucleation_procs.f90
@@ -91,7 +91,7 @@ USE MODD_PARAMETERS, ONLY : JPHEXT, JPVEXT
 USE MODD_NSV,        ONLY : NSV_LIMA_NC, NSV_LIMA_NR, NSV_LIMA_CCN_FREE, NSV_LIMA_CCN_ACTI, &
                             NSV_LIMA_NI, NSV_LIMA_IFN_FREE, NSV_LIMA_IFN_NUCL, NSV_LIMA_IMM_NUCL, NSV_LIMA_HOM_HAZE
 USE MODD_PARAM_LIMA, ONLY : LCOLD, LNUCL, LMEYERS, LSNOW, LWARM, LACTI, LRAIN, LHHONI,  &
-                            NMOD_CCN, NMOD_IFN, NMOD_IMM, XCTMIN, XRTMIN, LSPRO, NMOM_I
+                            NMOD_CCN, NMOD_IFN, NMOD_IMM, XCTMIN, XRTMIN, LSPRO, NMOM_I, NMOM_C
 USE MODD_TURB_n,     ONLY : LSUBG_COND
 
 use mode_budget,     only: Budget_store_add, Budget_store_init, Budget_store_end
@@ -152,7 +152,7 @@ INTEGER :: JL
 !
 !-------------------------------------------------------------------------------
 !
-IF ( LWARM .AND. LACTI .AND. NMOD_CCN >=1 ) THEN
+IF ( LWARM .AND. LACTI .AND. NMOD_CCN >=1 .AND. NMOM_C.GE.2) THEN
 
   IF (.NOT.LSUBG_COND .AND. .NOT.LSPRO) THEN
 
@@ -347,7 +347,7 @@ END IF
 !
 !-------------------------------------------------------------------------------
 !
-IF ( LCOLD .AND. LNUCL .AND. LHHONI .AND. NMOD_CCN >= 1) THEN
+IF ( LCOLD .AND. LNUCL .AND. LHHONI .AND. NMOD_CCN >= 1 .AND. NMOM_I.GE.2) THEN
   if ( lbu_enable ) then
     if ( lbudget_th ) call Budget_store_init( tbudgets(NBUDGET_TH), 'HONH', PTHT(:, :, :) * prhodj(:, :, :) / ptstep )
     if ( lbudget_rv ) call Budget_store_init( tbudgets(NBUDGET_RV), 'HONH', PRVT(:, :, :) * prhodj(:, :, :) / ptstep )
diff --git a/src/MNH/modd_nsv.f90 b/src/MNH/modd_nsv.f90
index 7a842a5c1cacb3073ca3daa6139f327c1ed1543e..510091af5da0da39aa9b05c67b49019c68a55be7 100644
--- a/src/MNH/modd_nsv.f90
+++ b/src/MNH/modd_nsv.f90
@@ -131,6 +131,9 @@ INTEGER,DIMENSION(JPMODELMAX)::NSV_LIMA_CCN_FREE_A = 0 ! First Free CCN conc.
 INTEGER,DIMENSION(JPMODELMAX)::NSV_LIMA_CCN_ACTI_A = 0 ! First Acti. CNN conc.
 INTEGER,DIMENSION(JPMODELMAX)::NSV_LIMA_SCAVMASS_A = 0 ! Scavenged mass variable
 INTEGER,DIMENSION(JPMODELMAX)::NSV_LIMA_NI_A = 0       ! First Ni var.
+INTEGER,DIMENSION(JPMODELMAX)::NSV_LIMA_NS_A = 0       ! First Ns var.
+INTEGER,DIMENSION(JPMODELMAX)::NSV_LIMA_NG_A = 0       ! First Ng var.
+INTEGER,DIMENSION(JPMODELMAX)::NSV_LIMA_NH_A = 0       ! First Nh var.
 INTEGER,DIMENSION(JPMODELMAX)::NSV_LIMA_IFN_FREE_A = 0 ! First Free IFN conc.
 INTEGER,DIMENSION(JPMODELMAX)::NSV_LIMA_IFN_NUCL_A = 0 ! First Nucl. IFN conc.
 INTEGER,DIMENSION(JPMODELMAX)::NSV_LIMA_IMM_NUCL_A = 0 ! First Nucl. IMM conc.
@@ -234,6 +237,9 @@ INTEGER :: NSV_LIMA_CCN_FREE !
 INTEGER :: NSV_LIMA_CCN_ACTI !
 INTEGER :: NSV_LIMA_SCAVMASS !
 INTEGER :: NSV_LIMA_NI       !
+INTEGER :: NSV_LIMA_NS       !
+INTEGER :: NSV_LIMA_NG       !
+INTEGER :: NSV_LIMA_NH       !
 INTEGER :: NSV_LIMA_IFN_FREE !
 INTEGER :: NSV_LIMA_IFN_NUCL !
 INTEGER :: NSV_LIMA_IMM_NUCL !
diff --git a/src/MNH/modd_param_lima.f90 b/src/MNH/modd_param_lima.f90
index cb12356ec2fc80a1ba6268b923f486edc1020b6b..e3c53475e8eedb78e611d7bee795c2319cb414cb 100644
--- a/src/MNH/modd_param_lima.f90
+++ b/src/MNH/modd_param_lima.f90
@@ -61,11 +61,14 @@ LOGICAL, SAVE :: LHAIL                  ! TRUE to enable hail
 LOGICAL, SAVE :: LMEYERS                ! TRUE to use Meyers nucleation
 LOGICAL, SAVE :: LCIBU                  ! TRUE to use collisional ice breakup
 LOGICAL, SAVE :: LRDSF                  ! TRUE to use rain drop shattering by freezing
+INTEGER, SAVE :: NMOM_I                 ! Number of moments for pristine ice
+INTEGER, SAVE :: NMOM_S                 ! Number of moments for snow
+INTEGER, SAVE :: NMOM_G                 ! Number of moments for graupel
+INTEGER, SAVE :: NMOM_H                 ! Number of moments for hail
 !
 ! 1.2 IFN initialisation
 !
 INTEGER, SAVE          :: NMOD_IFN               ! Number of IFN modes
-INTEGER, SAVE          :: NMOM_I                 ! Number of moments for pristine ice
 REAL, DIMENSION(JPLIMAIFNMAX), SAVE :: XIFN_CONC ! Ref. concentration of IFN(#/L)
 LOGICAL, SAVE          :: LIFN_HOM               ! True for z-homogeneous IFN concentrations
 CHARACTER(LEN=8), SAVE :: CIFN_SPECIES           ! Internal mixing species definitions
@@ -146,6 +149,9 @@ LOGICAL, SAVE :: LADJ          ! TRUE for adjustment procedure + Smax (false for
 LOGICAL, SAVE :: LSPRO         ! TRUE for prognostic supersaturation                     
 LOGICAL, SAVE :: LKHKO         ! TRUE for Scu simulation (replicates the previous KHKO scheme)                     
 !
+INTEGER, SAVE :: NMOM_C        ! Number of moments for cloud droplets
+INTEGER, SAVE :: NMOM_R        ! Number of moments for rain drops
+!
 ! 2.2 CCN initialisation
 !
 INTEGER,         SAVE                     :: NMOD_CCN         ! Number of CCN modes
diff --git a/src/MNH/modn_param_lima.f90 b/src/MNH/modn_param_lima.f90
index e516ad088c7c2e6af4260abccd5bba28c0abe424..6edddc8840a78bf3be2e4219443bebe5ac29e85b 100644
--- a/src/MNH/modn_param_lima.f90
+++ b/src/MNH/modn_param_lima.f90
@@ -18,14 +18,15 @@ IMPLICIT NONE
 !
 !
 NAMELIST/NAM_PARAM_LIMA/LCOLD, LNUCL, LSEDI, LSNOW, LHAIL, LHHONI, LMEYERS,&
-                        NMOD_IFN, NMOM_I, XIFN_CONC, LIFN_HOM,             &
+                        NMOM_I, NMOM_S, NMOM_G, NMOM_H,                    &
+                        NMOD_IFN, XIFN_CONC, LIFN_HOM,                     &
                         CIFN_SPECIES, CINT_MIXING, NMOD_IMM, NIND_SPECIE,  &
                         LSNOW_T, CPRISTINE_ICE_LIMA, CHEVRIMED_ICE_LIMA,   &
                         XALPHAI, XNUI, XALPHAS, XNUS, XALPHAG, XNUG,       &
                         XFACTNUC_DEP, XFACTNUC_CON, NPHILLIPS,             &
                         LCIBU, XNDEBRIS_CIBU, LRDSF, LMURAKAMI,            &
                         LWARM, LACTI, LRAIN, LSEDC, LACTIT, LBOUND, LSPRO, &
-                        LADJ, LKHKO,                                       &
+                        LADJ, LKHKO, NMOM_C, NMOM_R,                       &
                         NMOD_CCN, XCCN_CONC,                               &
                         LCCN_HOM, CCCN_MODES, HINI_CCN, HTYPE_CCN,         &
                         XALPHAC, XNUC, XALPHAR, XNUR,                      &