diff --git a/src/arome/ext/aro_rain_ice.F90 b/src/arome/ext/aro_rain_ice.F90
index 8fd95fc4d9f092f209e61990836d98d4c7ad97c2..a22cb6da8e117aef7b43c3111fea0fa505e53fbd 100644
--- a/src/arome/ext/aro_rain_ice.F90
+++ b/src/arome/ext/aro_rain_ice.F90
@@ -213,6 +213,8 @@ REAL  :: ZRATIO                     ! ZMASSTOT / ZMASSCOR
 
 TYPE(TBUDGETDATA), DIMENSION(NBUDGET_RH) :: YLBUDGET !NBUDGET_RH is the one with the highest number
 TYPE(DIMPHYEX_t) :: YLDIMPHYEX
+LOGICAL, DIMENSION(KLON,1,KLEV) :: LLMICRO
+INTEGER :: ISIZE
 !
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 
@@ -433,13 +435,22 @@ ELSEIF (CMICRO=='OLD4') THEN
     ELSE
      ZKGN_SBGR(:,:) = RAIN_ICE_PARAM%XFRMIN(11)
     ENDIF
-    CALL RAIN_ICE_OLD( OSEDIC=OSEDIC, OCND2=OCND2, LKOGAN=LKOGAN, LMODICEDEP=LMODICEDEP, &
+    LLMICRO(:,:,:)=PRT(:,:,:,2)>RAIN_ICE_DESCR%XRTMIN(2) .OR. &
+                   PRT(:,:,:,3)>RAIN_ICE_DESCR%XRTMIN(3) .OR. &
+                   PRT(:,:,:,4)>RAIN_ICE_DESCR%XRTMIN(4) .OR. &
+                   PRT(:,:,:,5)>RAIN_ICE_DESCR%XRTMIN(5) .OR. &
+                   PRT(:,:,:,6)>RAIN_ICE_DESCR%XRTMIN(6) .OR. &
+                   PRT(:,:,:,7)>RAIN_ICE_DESCR%XRTMIN(7)
+    ISIZE=COUNT(LLMICRO)
+    CALL RAIN_ICE_OLD(YLDIMPHYEX, CST, PARAM_ICE, RAIN_ICE_PARAM, &
+                 &  RAIN_ICE_DESCR, TBUCONF, &
+                 &  OSEDIC=OSEDIC, OCND2=OCND2, LKOGAN=LKOGAN, LMODICEDEP=LMODICEDEP, &
                  &  HSEDIM=CSEDIM, HSUBG_AUCV_RC=CSUBG_AUCV_RC, &
                  &  OWARM=OWARM,KKA=KKA,KKU=KKU,KKL=KKL,KSPLITR=KSPLITR, &
-                 &  PTSTEP=2*PTSTEP, KRR=KRR,                              &
+                 &  PTSTEP=2*PTSTEP, KRR=KRR, KSIZE=ISIZE, GMICRO=LLMICRO, &
                  &  PDZZ=PDZZ, PRHODJ=PRHODJ, PRHODREF=PRHODREF, PEXNREF=PEXNREF,&
                  &  PPABST=PPABSM, PCIT=PCIT, PCLDFR=PCLDFR,  &
-                 &  PICLDFR=PICLDFR, PWCLDFR=PWCLDFR, &
+                 &  PICLDFR=PICLDFR, & !PWCLDFR=PWCLDFR, &
                  &  PSSIO=PSSIO, PSSIU=PSSIU, PIFR=PIFR, &
                  &  PTHT=PTHT,PRVT= PRT(:,:,:,1),PRCT= PRT(:,:,:,2), &
                  &  PRRT=PRT(:,:,:,3), &
@@ -451,7 +462,7 @@ ELSEIF (CMICRO=='OLD4') THEN
                  &  PINPRC=ZINPRC,PINPRR=PINPRR,PEVAP3D=PEVAP,&
                  &  PINPRS=PINPRS, PINPRG=PINPRG, &
                  &  PSIGS=PSIGS, PSEA=PSEA, PTOWN=PTOWN, &
-                 &  YDDDH=YDDDH,YDLDDH=YDLDDH,YDMDDH=YDMDDH, &
+                 &  TBUDGETS=YLBUDGET, KBUDGETS=SIZE(YLBUDGET), &
                  &  PRHT=PRT(:,:,:,7),&
                  &  PRHS=PRS(:,:,:,7), PINPRH=PINPRH, PFPR=PFPR, &
                  &  PICENU=ZICENU, &
@@ -475,13 +486,21 @@ ELSE
     ELSE
      ZKGN_SBGR(:,:) = RAIN_ICE_PARAM%XFRMIN(11)
     ENDIF
-    CALL RAIN_ICE_OLD( OSEDIC=OSEDIC, OCND2=OCND2, LKOGAN=LKOGAN, LMODICEDEP=LMODICEDEP, &
+    LLMICRO(:,:,:)=PRT(:,:,:,2)>RAIN_ICE_DESCR%XRTMIN(2) .OR. &                                                                     
+                   PRT(:,:,:,3)>RAIN_ICE_DESCR%XRTMIN(3) .OR. &                                                                     
+                   PRT(:,:,:,4)>RAIN_ICE_DESCR%XRTMIN(4) .OR. &                                                                     
+                   PRT(:,:,:,5)>RAIN_ICE_DESCR%XRTMIN(5) .OR. &                                                                     
+                   PRT(:,:,:,6)>RAIN_ICE_DESCR%XRTMIN(6)
+    ISIZE=COUNT(LLMICRO)
+    CALL RAIN_ICE_OLD(YLDIMPHYEX, CST, PARAM_ICE, RAIN_ICE_PARAM, &
+                 &  RAIN_ICE_DESCR, TBUCONF, &
+                 &  OSEDIC=OSEDIC, OCND2=OCND2, LKOGAN=LKOGAN, LMODICEDEP=LMODICEDEP, &
                  &  HSEDIM=CSEDIM, HSUBG_AUCV_RC=CSUBG_AUCV_RC, &
                  &  OWARM=OWARM,KKA=KKA,KKU=KKU,KKL=KKL,KSPLITR=KSPLITR, &
-                 &  PTSTEP=2*PTSTEP, KRR=KRR,                              &
+                 &  PTSTEP=2*PTSTEP, KRR=KRR, KSIZE=ISIZE, GMICRO=LLMICRO, &
                  &  PDZZ=PDZZ, PRHODJ=PRHODJ, PRHODREF=PRHODREF, PEXNREF=PEXNREF,&
                  &  PPABST=PPABSM, PCIT=PCIT, PCLDFR=PCLDFR,  &
-                 &  PICLDFR=PICLDFR, PWCLDFR=PWCLDFR, &
+                 &  PICLDFR=PICLDFR, & !PWCLDFR=PWCLDFR, &
                  &  PSSIO=PSSIO, PSSIU=PSSIU, PIFR=PIFR, &
                  &  PTHT=PTHT,PRVT= PRT(:,:,:,1),PRCT= PRT(:,:,:,2), &
                  &  PRRT=PRT(:,:,:,3), &
@@ -493,7 +512,7 @@ ELSE
                  &  PINPRC=ZINPRC,PINPRR=PINPRR,PEVAP3D=PEVAP,&
                  &  PINPRS=PINPRS, PINPRG=PINPRG, &
                  &  PSIGS=PSIGS, PSEA=PSEA, PTOWN=PTOWN, &
-                 &  YDDDH=YDDDH,YDLDDH=YDLDDH,YDMDDH=YDMDDH, &
+                 &  TBUDGETS=YLBUDGET, KBUDGETS=SIZE(YLBUDGET), &
                  &  PFPR=PFPR, &
                  &  PICENU=ZICENU, &
                  &  PKGN_ACON=ZKGN_ACON, &
diff --git a/src/common/aux/ddh_mix.F90 b/src/common/aux/ddh_mix.F90
deleted file mode 100644
index 0e92e7bb44e1ba101986c27efdfc1980e0461ca7..0000000000000000000000000000000000000000
--- a/src/common/aux/ddh_mix.F90
+++ /dev/null
@@ -1,98 +0,0 @@
-!     ##################
-      MODULE DDH_MIX
-!     ##################
-
-
-!!    PURPOSE
-!!    -------
-!       module for type structure in  DDH
-
-!!**  IMPLICIT ARGUMENTS
-!!    ------------------
-
-!!    AUTHOR
-!!    ------
-!!    O.Riviere   *Meteo France*
-!!
-!!    Modifications :
-!!    --------------
-!!    F.Voitus     18/09/17 : New DDH flexible structure for OpenMP
-  
-!-------------------------------------------------------------------------------
-
-
-USE PARKIND1     , ONLY : JPIM, JPRB
-USE YOMHOOK      , ONLY : LHOOK,DR_HOOK
-USE YOMLUN_IFSAUX, ONLY : NULOUT
-
-IMPLICIT NONE
-
-SAVE
-
-
-!*       1.   TYPE DEFINITION
-
-
-! structure for vertical profile
-TYPE TYP_FIELD3D
-  REAL(KIND=JPRB), POINTER  :: RVAL(:,:)=>NULL() ! values (domains x vertical)
-  CHARACTER(LEN=16)         :: CNAME             ! name
-  CHARACTER(LEN=1)          :: CTYPE             ! indicate wether it's a flux, variable or tendency
-END TYPE TYP_FIELD3D
-
-TYPE TYP_FIELD2D
-  REAL(KIND=JPRB), POINTER :: RVAL(:)=>NULL() ! values (domains)
-  CHARACTER(LEN=16)        :: CNAME           ! name
-  CHARACTER(LEN=1)         :: CTYPE           ! indicate wether it's a flux, variable or tendency
-END TYPE TYP_FIELD2D
-
-TYPE TYP_BUVAR
-  REAL(KIND=JPRB), POINTER  :: RVAL(:,:)=>NULL() ! values (domains)
-  CHARACTER(LEN=2)          :: CNAME             ! name
-END TYPE TYP_BUVAR
-
-
-! structure containing fields, weights for horizontal averaging, etc.
-TYPE TYP_DDH
-  INTEGER(KIND=JPIM)          :: NLEV                  ! vertical dimension
-  INTEGER(KIND=JPIM)          :: NPROMA                ! horizontal dimension                                                    
-  INTEGER(KIND=JPIM)          :: KST                   ! first point
-  INTEGER(KIND=JPIM)          :: KEND                  ! last point
-
-  ! 3D field info
-  INTEGER(KIND=JPIM)          :: NFIELDS3D             ! number of fields
-  INTEGER(KIND=JPIM)          :: NFIELDS3D_OFFSET      ! offset value for the fields when 
-                                                       ! putting in the global arrays
-  INTEGER(KIND=JPIM)          :: NFIELDS3D_AUTO        ! number of fields that should be 
-                                                       ! automatically allocated 
-                                                       ! (maximum of cpg and cpglag)
-  TYPE(TYP_FIELD3D), POINTER  :: YFIELD3D(:)=>NULL()   ! array of fields
-  REAL(KIND=JPRB), POINTER    :: RVAL3D(:,:,:)=>NULL() ! auxiliary array for fast 
-                                                       ! (automatic) allocation
-                                                       ! (vertical x fields x domains)
-  ! 2D field info
-  INTEGER(KIND=JPIM)          :: NFIELDS2D             ! number of fields
-  INTEGER(KIND=JPIM)          :: NFIELDS2D_OFFSET      ! offset value for the fields when 
-                                                       ! putting in the global arrays
-  INTEGER(KIND=JPIM)          :: NFIELDS2D_AUTO        ! number of fields that should be 
-                                                       ! automatically allocated 
-                                                       ! (maximum of cpg and cpglag)
-  TYPE(TYP_FIELD2D), POINTER  :: YFIELD2D(:)=>NULL()   ! array of fields
-  REAL(KIND=JPRB), POINTER    :: RVAL2D(:,:)=>NULL()   ! auxiliary array for fast 
-                                                       ! (automatic) allocation
-                                                       ! (vertical x fields x domains)
-  ! horizontal info
-  REAL(KIND=JPRB), POINTER    :: WEIGHT(:)=>NULL()     ! weights inside one NPROMA block
-  INTEGER(KIND=JPIM), POINTER :: NDDHI(:)=>NULL()      ! cfr. KDDHI in cpg_dia
-
-
-  TYPE(TYP_BUVAR), POINTER    :: YVARMULT(:)=>NULL()    ! array of fields
-  REAL(KIND=JPRB), POINTER    :: RVARSM(:,:,:,:)=>NULL()! auxiliary array for fast 
-                                                        ! (automatic) allocation
-
-END TYPE TYP_DDH
-
-
-
-END MODULE DDH_MIX
-
diff --git a/src/common/aux/mode_budget_phy.F90 b/src/common/aux/mode_budget_phy.F90
index 033f14774121549698d64cb54c284cc39cbf5966..30db2f33b4fc10006c42562750ef1a5c7ddb131b 100644
--- a/src/common/aux/mode_budget_phy.F90
+++ b/src/common/aux/mode_budget_phy.F90
@@ -48,18 +48,4 @@ SUBROUTINE BUDGET_STORE_ADD(TPBUDGET, HSOURCE, PVARS)
   REAL, DIMENSION(:,:,:), INTENT(IN)    :: PVARS    ! Current value to be stored
   REAL, DIMENSION(SIZE(PVARS, 1), SIZE(PVARS, 2), SIZE(PVARS, 3)) :: ZVARS
 END SUBROUTINE BUDGET_STORE_ADD
-!
-SUBROUTINE BUDGET_DDH(PVARS, KBUDN, HSOURCE, YDDDH, YDLDDH, YDMDDH, LDISDIFF)
-  USE DDH_MIX, ONLY  : TYP_DDH
-  USE YOMLDDH, ONLY  : TLDDH
-  USE YOMMDDH, ONLY  : TMDDH
-
-  REAL, DIMENSION(:,:), INTENT(IN)    :: PVARS    ! source of the variable
-  INTEGER,              INTENT(IN)    :: KBUDN    ! variable number
-  CHARACTER(LEN=*),     INTENT(IN)    :: HSOURCE  ! Identifier of the Budget
-  TYPE(TYP_DDH),        INTENT(INOUT) :: YDDDH
-  TYPE(TLDDH),          INTENT(IN)    :: YDLDDH
-  TYPE(TMDDH),          INTENT(IN)    :: YDMDDH
-  LOGICAL, OPTIONAL,    INTENT(IN)    :: LDISDIFF ! PVARS contains the increment (default is .FALSE.)
-END SUBROUTINE BUDGET_DDH
 END MODULE MODE_BUDGET_PHY
diff --git a/src/common/aux/yomlddh.F90 b/src/common/aux/yomlddh.F90
deleted file mode 100644
index c07b30a41280e41812a09bf39a64dab71f979ac6..0000000000000000000000000000000000000000
--- a/src/common/aux/yomlddh.F90
+++ /dev/null
@@ -1,81 +0,0 @@
-MODULE YOMLDDH
-
-IMPLICIT NONE
-
-SAVE
-
-!     ------------------------------------------------------------------
-!     LOGIQUE DIAGNOSTIQUES DOMAINES HORIZONTAUX
-
-!     LSDDH   : VRAI SI AU MOINS UN DIAGNOSTIC DDH ACTIF
-!     LHDGLB = CALCULS EN VUE DES MOYENNES GLOBALES
-!     LHDZON = CALCULS EN VUE DES MOYENNES ZONALES
-!     LHDDOP = CALCULS EN VUE DES MOYENNES SUR DOMAINES LIMITES, POINTS
-!              ISOLES COMPRIS
-!     LHDLFA = TRUE IF OUTPUT ON LFA FILE OTHERWISE PSEUDOGRIB
-
-!     LHDHKS = OPERE SUR MASSES, ENERGIES ET SOL
-!     LHDMCI = OPERE SUR MOMENT CINETIQUE
-!     LHDENT = OPERE SUR ENTROPIE
-
-!     LHDPRG = CUMUL ET IMPRESSION MOYENNES GLOBALES
-!     LHDPRZ = CUMUL ET IMPRESSION MOYENNES ZONALES (1 BANDE: NDHZPR)
-!     LHDPRD = CUMUL ET IMPRESSION DOMAINES LIMITES (TOUS DOMAINES)
-!     LHDPR = DES IMPRESSIONS SONT DEMANDEES
-
-!     LHDEFG = CUMUL ET ECRITURE FICHIER DES MOYENNES GLOBALES
-!     LHDEFZ = CUMUL ET ECRITURE FICHIER DES MOYENNES ZONALES
-!     LHDEFD = CUMUL ET ECRITURE FICHIER DOMAINES LIMITES
-
-!     LHDLIST = IMPRESSIONS COMPLETES
-!            LES INDICATEURS SUIVANTS SONT DE NIVEAU 4 ET PLUS
-!            AU PAS DE TEMPS EN COURS (NSTEP):
-
-!     LHDOUFG = "SYNTHESIS" AND WRITE OUT GLOBAL MEAN DDH
-!     LHDOUFZ = "SYNTHESIS" AND WRITE OUT ZONAL MEAN DDH
-!     LHDOUFD = "SYNTHESIS" AND WRITE OUT LIMITED AREAS DDH
-!     LHDOUP = EFFECTUER UNE SYNTHESE ET IMPRESSION
-
-!     LHDFIL = IMPRESS. DE LA LISTE DES ARTICLES DES FICHIERS DE SORTIE.
-!     LRDDHDYN = TRUE IF AT LEAST ONE DYNAMICAL DDH DIAGNOSTIC IS ACTIVATED
-!     LRSLDDH = TRUE IF SEMI-LAG DDH  IS ACTIVATED
-!     LRHDDDH = TRUE IF HORIZ. DIFFUSION DDH IS ACTIVATED
-!     LRSIDDH = TRUE IF SEMI-IMPLICIT DDH IS ACTIVATED
-
-TYPE :: TLDDH
-LOGICAL :: LSDDH
-LOGICAL :: LHDGLB
-LOGICAL :: LHDZON
-LOGICAL :: LHDDOP
-LOGICAL :: LHDLFA
-LOGICAL :: LHDHKS
-LOGICAL :: LHDMCI
-LOGICAL :: LHDENT
-LOGICAL :: LHDPRG
-LOGICAL :: LHDPRZ
-LOGICAL :: LHDPRD
-LOGICAL :: LHDPR
-LOGICAL :: LHDEFG
-LOGICAL :: LHDEFZ
-LOGICAL :: LHDEFD
-LOGICAL :: LHDLIST
-LOGICAL :: LHDOUFG
-LOGICAL :: LHDOUFZ
-LOGICAL :: LHDOUFD
-LOGICAL :: LHDOUP
-LOGICAL :: LHDFIL
-LOGICAL :: LONLYVAR
-LOGICAL :: LHDORIGP
-LOGICAL :: LHDCDPI
-LOGICAL :: LFLEXDIA
-LOGICAL :: LRDDHDYN
-LOGICAL :: LRSLDDH
-LOGICAL :: LRSIDDH
-LOGICAL :: LRHDDDH
-LOGICAL :: LDDH_OMP
-END TYPE  TLDDH
-
-!!TYPE(TLDDH), POINTER :: YRLDDH => NULL()
-
-!     ------------------------------------------------------------------
-END MODULE YOMLDDH
diff --git a/src/common/aux/yomlun_ifsaux.F90 b/src/common/aux/yomlun_ifsaux.F90
deleted file mode 100644
index 77525d07bc1d54d08a8ea18d2c6c782b697c64b2..0000000000000000000000000000000000000000
--- a/src/common/aux/yomlun_ifsaux.F90
+++ /dev/null
@@ -1,23 +0,0 @@
-MODULE YOMLUN_IFSAUX
-
-USE PARKIND1  ,ONLY : JPIM
-
-IMPLICIT NONE
-
-SAVE
-
-!     ------------------------------------------------------------------
-
-!*    Logical units used by code
-
-!     NULOUT :   output unit
-!     NULERR :   unit number for comparison with reference run
-
-!     NULDRHACK : output unit for drHack pseudo xml file (see
-!     dr_hook_util.F90)
-INTEGER(KIND=JPIM) :: NULOUT = 6
-INTEGER(KIND=JPIM) :: NULERR = 0
-INTEGER(KIND=JPIM) :: NULDRHACK = 999
-
-!     ------------------------------------------------------------------
-END MODULE YOMLUN_IFSAUX
diff --git a/src/common/aux/yommddh.F90 b/src/common/aux/yommddh.F90
deleted file mode 100644
index 274b078c4835e937fefd547266c8cc29a39fbfc7..0000000000000000000000000000000000000000
--- a/src/common/aux/yommddh.F90
+++ /dev/null
@@ -1,311 +0,0 @@
-MODULE YOMMDDH
-
-USE PARKIND1 , ONLY : JPIM, JPRB
-
-IMPLICIT NONE
-
-SAVE
-
-!     ------------------------------------------------------------------
-!     DIAGNOSTIQUES DOMAINES HORIZONTAUX
-!     ----------------------------------
-
-!     DIMENSIONS DES DIAGNOSTIQUES DDH
-!     ---------------------------------
-! === basic dimensions for reading NAMDDH ===
-INTEGER(KIND=JPIM), PARAMETER :: JPDHNOX=200
-INTEGER(KIND=JPIM), PARAMETER :: JPDHXPU=5
-
-!     JPDHNOX: Maximum number of user area
-!     JPDHXPU: Maximum number of user or mask memory plans
-
-TYPE :: TMDDH
-INTEGER(KIND=JPIM) :: NDHKD
-INTEGER(KIND=JPIM) :: NDHNPU
-INTEGER(KIND=JPIM) :: NDHBPU(JPDHXPU)
-INTEGER(KIND=JPIM) :: NDHBPX
-INTEGER(KIND=JPIM) :: NDHNOM
-INTEGER(KIND=JPIM) :: NDHDDX
-INTEGER(KIND=JPIM) :: NDHIDH
-INTEGER(KIND=JPIM) :: NDHCS
-INTEGER(KIND=JPIM) :: NDHCV
-INTEGER(KIND=JPIM) :: NDHCVSU
-INTEGER(KIND=JPIM) :: NDHCSSU
-INTEGER(KIND=JPIM) :: NDHCVSUN
-INTEGER(KIND=JPIM) :: NDHCVSUL
-!     NDHKD : NOMBRE DE BANDES DE LATITUDES
-!     NDHNPU : NOMBRE DE MASQUES UTILISES NDHNPU .LE. JPDHXPU
-!     NDHBPU(JPDHXPU) : NOMBRE DE DOMAINES CONTENU DANS CHAQUE MASQUE
-!     NDHBPX : NOMBRE DE DOMAINE MAXIMAL PAR MASQUE
-!                                         NDHBPX = MAX( NDHBPU )
-!     NDHNOM : NOMBRE TOTALE DE DOMAINES LIMITES EN NOMENCLATURE
-!                                         NDHNOM .LE. JPDHNOX
-!     NDHDDX : NOMBRE MAXIMAL DE DOMAINES INTERNES POSSIBLES
-!     NDHIDH : NOMBRE DE DOMAINES INTERNES ( OR DOMAINE 0 EVENTUEL )
-!              INITIALISE PAR CALCUL DANS SUMDDH
-!     NDHCS  : NOMBRE TOTAL DE CHAMPS AU SOL
-!     NDHCV  : NOMBRE TOTAL DE CHAMPS EN PROFILS VERTICAUX
-!     NDHCVSU: DIMENSION TABLEAUX LOCAUX DE CHAMPS VERTICAUX
-!              NDHCVSU EST IMPAIR ET VAUT 1 AU MOINS
-!     NDHCSSU: DIMENSION TABLEAUX LOCAUX DE CHAMPS AU SOL
-
-!     INDICATEURS D ORGANISATION DE LA REPARTITION DES CHAMPS
-!     ------------------------------------------------------------------
-INTEGER(KIND=JPIM) :: NDHVV
-INTEGER(KIND=JPIM) :: NDHFVD
-INTEGER(KIND=JPIM) :: NDHFVP
-INTEGER(KIND=JPIM) :: NDHVS
-INTEGER(KIND=JPIM) :: NDHFSD
-INTEGER(KIND=JPIM) :: NDHFSP
-INTEGER(KIND=JPIM) :: NDHFFS
-INTEGER(KIND=JPIM) :: NDHVFS
-INTEGER(KIND=JPIM) :: NFSVAR_AERO
-INTEGER(KIND=JPIM) :: NFSFLX_AERO
-
-INTEGER(KIND=JPIM) :: NDHVTLS
-INTEGER(KIND=JPIM) :: NDHFTLS
-INTEGER(KIND=JPIM) :: NDHVTSS
-INTEGER(KIND=JPIM) :: NDHFTSS
-INTEGER(KIND=JPIM) :: NDHVTTS
-INTEGER(KIND=JPIM) :: NDHFTTS
-INTEGER(KIND=JPIM) :: NDHVTIS
-INTEGER(KIND=JPIM) :: NDHFTIS
-INTEGER(KIND=JPIM) :: NDHVSSS
-INTEGER(KIND=JPIM) :: NDHFSSS
-INTEGER(KIND=JPIM) :: NDHVIIS
-INTEGER(KIND=JPIM) :: NDHFIIS
-INTEGER(KIND=JPIM) :: NDHVWLS
-INTEGER(KIND=JPIM) :: NDHFWLS
-
-INTEGER(KIND=JPIM) :: NDHTHK
-INTEGER(KIND=JPIM) :: NDHVHK
-INTEGER(KIND=JPIM) :: NDHFHKD
-INTEGER(KIND=JPIM) :: NDHFHKP
-INTEGER(KIND=JPIM) :: NDHTMC
-INTEGER(KIND=JPIM) :: NDHVMC
-INTEGER(KIND=JPIM) :: NDHFMCD
-INTEGER(KIND=JPIM) :: NDHFMCP
-INTEGER(KIND=JPIM) :: NDHTEN
-INTEGER(KIND=JPIM) :: NDHVEN
-INTEGER(KIND=JPIM) :: NDHFEND
-INTEGER(KIND=JPIM) :: NDHFENP
-INTEGER(KIND=JPIM) :: NDHAVD
-INTEGER(KIND=JPIM) :: NDHBVD
-INTEGER(KIND=JPIM) :: NDHAVP
-INTEGER(KIND=JPIM) :: NDHBVP
-INTEGER(KIND=JPIM) :: NDHAHKD
-INTEGER(KIND=JPIM) :: NDHBHKD
-INTEGER(KIND=JPIM) :: NDHAHKP
-INTEGER(KIND=JPIM) :: NDHBHKP
-INTEGER(KIND=JPIM) :: NDHAMCD
-INTEGER(KIND=JPIM) :: NDHBMCD
-INTEGER(KIND=JPIM) :: NDHAMCP
-INTEGER(KIND=JPIM) :: NDHBMCP
-INTEGER(KIND=JPIM) :: NDHAEND
-INTEGER(KIND=JPIM) :: NDHBEND
-INTEGER(KIND=JPIM) :: NDHAENP
-INTEGER(KIND=JPIM) :: NDHBENP
-
-!   * LES INDICATEURS PRECEDES DE * SONT DES NOMBRES ATTACHES
-!     AU CODE FORTRAN DE CALCUL SCIENTIFIQUE, ET NON DES
-!     PARAMETRES AJUSTABLES AUX CIRCONSTANCES
-
-!     NDHVV  : NOMBRE DE VARIABLES SUR LA VERTICALE
-!     NDHFVD : NOMBRE DE FLUX+TENDANCES DYNAMIQUES SUR LA VERTICALE
-!           DETAIL CI DESSOUS
-!     NDHFVP : NOMBRE DE FLUX+TENDANCES PHYSIQUES SUR LA VERTICALE
-!           DETAIL CI DESSOUS
-
-!   * NDHVS  : NOMBRE DE VARIABLES AU SOL
-!   * NDHFSD : NOMBRE DE FLUX DYNAMIQUES AU SOL
-!   * NDHFSP : NOMBRE DE FLUX PHYSIQUES AU SOL
-!   * NDHFFS : Number of free-style fluxes
-!   * NDHVFS : Number of free-style variables
-!   * NFSVAR_AERO : Index of first aerosol variable in the list of free-style vars.
-!   * NFSFLX_AERO : Index of first aerosol flux in the list of free-style fluxes
-
-!   * NDHVTLS: Number of variables for individual tiles
-!   * NDHFTLS: Number of fluxes for individual tiles
-!   * NDHVTSS: Number of variables for snow energy budget
-!   * NDHFTSS: Number of fluxes for snow energy budget
-!   * NDHVTTS: Number of variables for soil energy budget
-!   * NDHFTTS: Number of fluxes for soil energy budget
-!   * NDHVTIS: Number of variables for sea ice energy budget
-!   * NDHFTIS: Number of fluxes for sea ice energy budget
-!   * NDHVSSS: Number of variables for snow water budget
-!   * NDHFSSS: Number of fluxes for snow water budget
-!   * NDHVIIS: Number of variables for interception layer water budget
-!   * NDHFIIS: Number of fluxes for interception layer water budget
-!   * NDHVWLS: Number of variables for soil water budget
-!   * NDHFWLS: Number of fluxes for soil water budget
-
-!     NDHTHK : NOMBRE TOTAL DE CHAMPS VERTICAUX SOUS LHDHKS
-!   * NDHVHK : NOMBRE DE VARIABLES SOUS LHDHKS
-!   * NDHFHKD: NOMBRE DE FLUX+TENDANCES DYNAMIQUES SOUS LHDHKS
-!   * NDHFHKP: NOMBRE DE FLUX+TENDANCES PHYSIQUES SOUS LHDHKS
-
-!     NDHTMC : NOMBRE TOTAL DE CHAMPS VERTICAUX SOUS LHDMCI
-!   * NDHVMC : NOMBRE DE VARIABLES SOUS LHDMCI
-!   * NDHFMCD: NOMBRE DE FLUX+TENDANCES DYNAMIQUES SOUS LHDMCI
-!   * NDHFMCP: NOMBRE DE FLUX+TENDANCES PHYSIQUES SOUS LHDMCI
-
-!     NDHTEN : NOMBRE TOTAL DE CHAMPS SOUS LHDENT
-!   * NDHVEN : NOMBRE DE VARIABLES SOUS LHDENT
-!   * NDHFEND: NOMBRE DE FLUX+TENDANCES DYNAMIQUES SOUS LHDENT
-!   * NDHFENP: NOMBRE DE FLUX+TENDANCES PHYSIQUES SOUS LHDENT
-
-!     NDHAVD : NOMBRE TOTAL DE TENDANCES DYNAMIQUES
-!     NDHBVD : NOMBRE TOTAL DE FLUX DYNAMIQUES
-!     NDHAVP : NOMBRE TOTAL DE FLUX PHYSIQUES
-!     NDHBVP : NOMBRE TOTAL DE TENDANCES PHYSIQUES
-!   * NDHAHKD : NOMBRE TOTAL DE TENDANCES DYNAMIQUES, OPTION LHDHKS
-!   * NDHBHKD : NOMBRE TOTAL DE FLUX DYNAMIQUES
-!   * NDHAHKP : NOMBRE TOTAL DE FLUX PHYSIQUES
-!   * NDHBHKP : NOMBRE TOTAL DE TENDANCES PHYSIQUES
-!   * NDHAMCD : NOMBRE TOTAL DE TENDANCES DYNAMIQUES, OPTION LHDMCI
-!   * NDHBMCD : NOMBRE TOTAL DE FLUX DYNAMIQUES
-!   * NDHAMCP : NOMBRE TOTAL DE FLUX PHYSIQUES
-!   * NDHBMCP : NOMBRE TOTAL DE TENDANCES PHYSIQUES
-!   * NDHAEND : NOMBRE TOTAL DE TENDANCES DYNAMIQUES, OPTION LHDENT
-!   * NDHBEND : NOMBRE TOTAL DE FLUX DYNAMIQUES
-!   * NDHAENP : NOMBRE TOTAL DE FLUX PHYSIQUES
-!   * NDHBENP : NOMBRE TOTAL DE TENDANCES PHYSIQUES
-
-!     IDENTIFICATION DES DOMAINES DE L UTILISATEUR
-!     ------------------------------------------------------------------
-
-INTEGER(KIND=JPIM) :: NDHZPR
-REAL(KIND=JPRB) :: FNODDH(11,JPDHNOX)
-REAL(KIND=JPRB) :: BDEDDH(10,JPDHNOX)
-REAL(KIND=JPRB) :: HDSFGL
-
-!     FNODDH : DESCRIPTEURS DES DOMAINES LIMITES UTILISATEUR ACCEPTES
-!           (1,-) : PLAN MEMOIRE (MASQUE)
-!           (2,-) : NUMERO D ORDRE DANS LE PLAN
-!          CES DEUX NOMBRES FORMENT LES COORDONNEES INTERNES DU DOMAINE
-!           (3,-) A (10,-) : COORDONNEES (EN GAL LON, SIN(LAT) EN RD)
-!                            SUIVANT LE TYPE (VOIR DOCUMENTATION)
-!           (11,-) : TYPE DE DOMAINE
-
-!     BDEDDH : DESCRIPTEUR BRUT LU SUR NAMELIST
-!              (CERTAINS DOMAINES PEUVENT AVOIR ETE REJETES)
-!           (1,-) : TYPE DE DOMAINE
-!           (2,-) : PLAN MEMOIRE
-!           (3,-) A (10,-) : COORDONNEES (EN GAL LON, LAT EN DEG)
-!                            SUIVANT LE TYPE (VOIR DOCUMENTATION)
-!     HDSFGL : VOIR CI DESSOUS
-!     NDHZPR : INDICE DE LA BANDE ZONALE EVENTUELLEMENT IMPRIMEE
-
-!     MASQUES DES DIAGNOSTIQUES DDH, POIDS POUR LES MOYENNES
-!     ------------------------------------------------------------------
-
-INTEGER(KIND=JPIM),ALLOCATABLE:: NDDHLA(:)
-INTEGER(KIND=JPIM),ALLOCATABLE:: NDDHPU(:,:)
-
-INTEGER(KIND=JPIM),ALLOCATABLE:: NDDHI(:)
-!     -----
-INTEGER(KIND=JPIM),ALLOCATABLE:: NLRDDH(:,:)
-INTEGER(KIND=JPIM),ALLOCATABLE:: NURDDH(:,:,:)
-!     -----
-INTEGER(KIND=JPIM),ALLOCATABLE:: NLXDDH(:)
-INTEGER(KIND=JPIM),ALLOCATABLE:: NUXDDH(:,:)
-!     -----
-REAL(KIND=JPRB),ALLOCATABLE:: HDSFLA(:)
-REAL(KIND=JPRB),ALLOCATABLE:: HDSFDU(:,:)
-REAL(KIND=JPRB),ALLOCATABLE:: HDSF(:)
-
-!     NDDHLA : MASQUE BANDES DE LATITUDES
-!     NDDHPU : MASQUES POUR LES DOMAINES LIMITES ET LES POINTS
-
-!     NDDHI : MASQUE DES DOMAINES INTERNES
-
-!     NLRDDH : DISTRIBUTION DE CHAQUE BANDE DE LATITUDE EN DOMAINES INTERNES
-!     NURDDH : DISTRIBUTION DE CHAQUE DOMAINE DE CHAQUE PLAN EN DOMAINES INTERNE
-
-!     NLXDDH : BORNE DE LECTURE DE NLRDDH POUR CHAQUE BANDE
-!     NUXDDH : BORNE DE LECTURE DE NURDDH POUR CHAQUE DOMAINE DE CHAQUE PLAN
-
-!     HDSFLA : POIDS DE CHAQUE BANDE DE LATITUDE
-!     HDSFDU : POIDS DE CHAQUE DOMAINE UTILISATEUR
-!     HDSFGL : POIDS POUR LES MOYENNES GLOBALES
-!     HDSF : POIDS DE CHAQUE POINT DE LA GRILLE PHYSIQUE
-
-!     POINTEURS
-
-! ---- DDH
-
-!     ------------------------------------------------------------------
-
-! ----DIMENSIONS OF THE GMV AND GFL ARRAYS AND POINTERS
-!     FOR DYNAMICAL SI AND HD DDH TENDENCIES
-
-INTEGER(KIND=JPIM) :: NDIMHDGFL
-INTEGER(KIND=JPIM) :: NDIMSIGMV
-
-INTEGER(KIND=JPIM) :: MSIDDH_U1
-INTEGER(KIND=JPIM) :: MSIDDH_V1
-INTEGER(KIND=JPIM) :: MSIDDH_T1
-INTEGER(KIND=JPIM) :: MSIDDH_PD1
-INTEGER(KIND=JPIM) :: MSIDDH_VD1
-
-INTEGER(KIND=JPIM) :: MSIDDH_U0
-INTEGER(KIND=JPIM) :: MSIDDH_V0
-INTEGER(KIND=JPIM) :: MSIDDH_T0
-INTEGER(KIND=JPIM) :: MSIDDH_PD0
-INTEGER(KIND=JPIM) :: MSIDDH_VD0
-
-INTEGER(KIND=JPIM) :: MSIDDH_U9
-INTEGER(KIND=JPIM) :: MSIDDH_V9
-INTEGER(KIND=JPIM) :: MSIDDH_T9
-INTEGER(KIND=JPIM) :: MSIDDH_PD9
-INTEGER(KIND=JPIM) :: MSIDDH_VD9
-
-INTEGER(KIND=JPIM) :: MHDDDH_U
-INTEGER(KIND=JPIM) :: MHDDDH_V
-INTEGER(KIND=JPIM) :: MHDDDH_T
-INTEGER(KIND=JPIM) :: MHDDDH_Q
-INTEGER(KIND=JPIM) :: MHDDDH_PD
-INTEGER(KIND=JPIM) :: MHDDDH_VD
-INTEGER(KIND=JPIM) :: MHDDDH_NHX
-
-! pointers for DDH arrays used in the semi-Lagrangian scheme
-INTEGER(KIND=JPIM) :: MSLDDH_U
-INTEGER(KIND=JPIM) :: MSLDDH_V
-INTEGER(KIND=JPIM) :: MSLDDH_T
-INTEGER(KIND=JPIM) :: MSLDDH_PD
-INTEGER(KIND=JPIM) :: MSLDDH_VD
-INTEGER(KIND=JPIM) :: MSLDDH_NHX
-
-!     MTNDSI_DDH_U : POINTEUR SUR LA COMPOSANTE-U DU VENT DANS LE TABLEAU 
-!                    CONTENANT LES TENDANCES SEMI-IMPLICITES 
-!     MTNDSI_DDH_V : POINTEUR SUR LA COMPOSANTE-V DU VENT DANS LE TABLEAU 
-!                    CONTENANT LES TENDANCES SEMI-IMPLICITES
-!     MTNDSI_DDH_T : POINTEUR SUR LA TEMPERATURE DANS LE TABLEAU 
-!                    CONTENANT LES TENDANCES SEMI-IMPLICITES
-!     MTNDHD_DDH_U : POINTEUR SUR LA COMPOSANTE-U DU VENT DANS LE TABLEAU GMV
-!                    CONTENANT LES TENDANCES LIEES A LA DIFFUSION HORIZONTALE
-!     MTNDHD_DDH_V : POINTEUR SUR LA COMPOSANTE-V DU VENT DANS LE TABLEAU GMV
-!                    CONTENANT LES TENDANCES LIEES A LA DIFFUSION HORIZONTALE
-!     MTNDHD_DDH_T : POINTEUR SUR LA TEMPERATURE DANS LE TABLEAU GMV
-!                    CONTENANT LES TENDANCES LIEES A LA DIFFUSION HORIZONTALE
-!     MTNDHD_DDH_Q : POINTEUR SUR L'HUMIDITE SPECIFIQUE DANS LE TABLEAU GFL
-!                    CONTENANT LES TENDANCES LIEES A LA DIFFUSION HORIZONTALE
-!     NTNDHD_GFL   : NOMBRE TOTAL DE  GFL TRAITES EN SPECTRAL ET DIFFUSSES
-
-! CFPATHDDH   : directory name (ending with a '/') of DDH output files
-
-CHARACTER(LEN=200) :: CFPATHDDH
-
-INTEGER(KIND=JPIM) :: NFIELDS3D_AUTO
-INTEGER(KIND=JPIM) :: NFIELDS3D_OFFSET
-INTEGER(KIND=JPIM) :: NFIELDSMAX
-INTEGER(KIND=JPIM) :: NFIELDS2D_AUTO
-INTEGER(KIND=JPIM) :: NFIELDS2D_OFFSET
-
-
-END TYPE TMDDH
-
-!!TYPE(TMDDH), POINTER :: YRMDDH => NULL()
-
-!     ------------------------------------------------------------------
-END MODULE YOMMDDH
diff --git a/src/common/aux/yomtddh.F90 b/src/common/aux/yomtddh.F90
deleted file mode 100644
index 64518026b721a09909a4407d50e18b5465696c13..0000000000000000000000000000000000000000
--- a/src/common/aux/yomtddh.F90
+++ /dev/null
@@ -1,325 +0,0 @@
-MODULE YOMTDDH
-
-USE PARKIND1  ,ONLY : JPRB
-
-IMPLICIT NONE
-
-SAVE
-
-!    TABLEAUX DE CUMUL DES DIAGNOSTICS DDH
-
-TYPE :: TTDDH
-!      REAL HDCVB0 (NDHCV*(NFLEVG+1),NDHIDH)
-!      REAL HDCVB1 (NDHCV*(NFLEVG+1),NDHIDH)
-!      REAL HDCS0 (NDHCS,NDHIDH)
-!      REAL HDCS1 (NDHCS,NDHIDH)
-
-REAL(KIND=JPRB),ALLOCATABLE:: HDCVB0(:,:,:)
-REAL(KIND=JPRB),ALLOCATABLE:: HDCVB1(:,:,:)
-REAL(KIND=JPRB),ALLOCATABLE:: HDCS0(:,:,:)
-REAL(KIND=JPRB),ALLOCATABLE:: HDCS1(:,:,:)
-
-! ARRAY TO SAVE INITIAL VALUES FOR FREE STYLE VARIABLES
-
-REAL(KIND=JPRB),ALLOCATABLE:: PDDHFSVI(:)
-
-CHARACTER(LEN=128), ALLOCATABLE :: CFLDNAMES3D(:)   ! # fields
-CHARACTER(LEN=1),   ALLOCATABLE :: CFLDTYPES3D(:)   ! # fields
-CHARACTER(LEN=128), ALLOCATABLE :: CFLDNAMES2D(:)   ! # fields
-CHARACTER(LEN=1),   ALLOCATABLE :: CFLDTYPES2D(:)   ! # fields
-
-END TYPE TTDDH
-
-!!TYPE(TTDDH), POINTER :: YRTDDH => NULL()
-
-!    POINTEURS
-
-!    TABLEAUX DE CUMUL DES DIAGNOSTICS DDH
-!    --------------------------------------
-
-!    DHCV. : TABLEAUX DE CUMULS DES VARIABLES/FLUX EN PROFILS VERTICAUX
-!    DHCVB.: TABLEAUX DE CUMULS PAR VARIABLES/FLUX NON DECOUPES EN NIVEAUX
-!    DHCS. : TABLEAUX DE CUMULS DES VARIABLES/FLUX AU SOL
-
-!    ORGANISATION DES TABLEAUX:
-!       CHAMPS ATMOSPHERIQUES
-!             TABLEAUX ---0 : VARIABLES INITIALES
-!             TABLEAUX ---1 : VARIABLES A NSTEP NON FILTREES
-!             TABLEAUX ---0 : CUMULS JUSQU A NSTEP-1
-!             TABLEAUX ---1 : CUMULS JUSQU A NSTEP
-!             1 A NDHVV:                                  VARIABLES DU MODELE
-!             NDHVV+1 A NDHVV+NDHAVD:                     TENDANCES DYNAMIQUES
-!             NDHVV+NDHAVD+1 A NDHVV+NDHFVD:              FLUX DYNAMIQUES
-!             NDHVV+NDHFVD+1 A NDHVV+NDHFVD+NDHAVP:       FLUX PHYSIQUES
-!             NDHVV+NDHFVD+NDHAVP+1 A NDHCV:              TENDANCES PHYSIQUES
-!       CHAMPS SOL
-!             TABLEAUX ---0 : VARIABLES INITIALES
-!             TABLEAUX ---1 : VARIABLES A NSTEP NON FILTREES
-!             TABLEAUX ---0 : CUMULS JUSQU A NSTEP-1
-!             TABLEAUX ---1 : CUMULS JUSQU A NSTEP
-!             1 A NDHVS:                                  VARIABLES DU MODELE
-!             NDHVS+1 A NDHVS+NDHVFS:                     FREE-STYLE VARIABLES
-!             NDHVS+NDHVFS+1 A NDHVS+NDHVFS+NDHFSD:       CUMULS DYNAMIQUES
-!             NDHVS+NDHVFS+NDHFSD+1 A
-!                NDHVS+NDHVFS+NDHFSD+NDHFSP:              CUMULS PHYSIQUES
-!             NDHVS+NDHVFS+NDHFSD+NDHFSP+1 A
-!                NDHVS+NDHVFS+NDHFSD+NDHFSP+NDHFFS=NDHCS: FREE-STYLE FLUXES
-
-!    LA VALEUR D UN CHAMP AU NIVEAU JLEV = 0 N A DE SENS QUE POUR LES
-!    FLUX. POUR LES TENDANCES ET VARIABLES, CETTE VALEUR EST NULLE
-
-!    CONTENU DES TABLEAUX
-!    --------------------
-
-!*      1. PROFILS VERTICAUX
-
-!*      1.1 VARIABLES
-
-!       SI LHDHKS (DEBUT A L'INDICE 1)
-!  1-VPP          - MASSE D'AIR
-!  2-VQV          - MASSE DE VAPEUR D'EAU QV
-!  3-VUU          - QUANTITE DE MOUVEMENT ZONALE UZ
-!  4-VVV          - QUANTITE DE MOUVEMENT MERIDIENNE VM
-!  5-VKK          - ENERGIE CINETIQUE KENE
-!  6-VCT          - ENTHALPIE CP*T
-!  7-VEP          - ENERGIE POTENTIELLE PHI
-!  8-VHR          - HUMIDITE RELATIVE
-!  9-VQL          - MASSE D'EAU LIQUIDE (SI LHDQLN=.TRUE.)
-! 10-VQN          - MASSE D'EAU NEIGEUSE (SI LHDQLN=.TRUE.)
-! 11-VQR          - RAIN MASS (SI LHDQLN=.TRUE.)
-! 12-VQS          - SNOW MASS (SI LHDQLN=.TRUE.)
-! 13-VQG          - GRAUPEL MASS (SI LHDQLN=.TRUE.)
-! 9+NHDQLNVA-V01  - VARIABLE PASSIVE NUMERO 01 (SI LHDPAS=.TRUE.)
-!    ...
-! 9+NHDQLNVA+NHDPASVA-1-Vxx - VARIABLE PASSIVE NUMERO xx=NHDPASVA (SI LHDPAS=.TRUE.)
-! 9+NHDQLNVA+NHDPASVA-VNT - NEBULOSITE TOTALE
-! 10+NHDQLNVA+NHDPASVA-VOM - VITESSE VERTICALE EN COORDONNEE PRESSION
-!       SI LHDMCI (DEBUT A L'INDICE NDHVHK+1)
-!  1-VA1          - MOMENT ANGULAIRE A1
-!  2-VA2          - MOMENT ANGULAIRE A2
-!  3-VA3          - MOMENT ANGULAIRE A3
-!       SI LHDENT (DEBUT A L'INDICE NDHVHK+NDHVMC+1)
-!  1-VSS          - ENTROPIE: S
-
-!*      1.2 TENDANCES DYNAMIQUES
-
-!       SI LHDHKS (DEBUT A L'INDICE NDHVV+1)
-!  1-TPPDIVFLUHOR - DIV. FLUX HORIZONTAL DE MASSE D'AIR
-!  2-TQVDIVFLUHOR - DIV. FLUX HORIZONTAL DE VAPEUR D'EAU
-!  3-TUUDIVFLUHOR - DIV. FLUX HORIZONTAL QTE DE MVT ZONALE (CALCUL PARTIEL)
-!  4-TVVDIVFLUHOR - DIV. FLUX HORIZONTAL QTE DE MVT MERIDIENNE (PARTIEL)
-!  5-TUUFFVGADPSG - QTE DE MVT AGEOSTROPHIQUE MERIDIENNE
-!  6-TVVFFVGADPSG - QTE DE MVT AGEOSTROPHIQUE ZONALE
-!  7-TKKDIVFLUHOR - DIV. FLUX HORIZONTAL ENERGIE CINETIQUE
-!  8-TKKCONVERSI1 - TRAVAIL DES FORCES DE PRESSION
-!  9-TCTDIVFLUHOR - DIV. FLUX HORIZONTAL ENTHALPIE
-! 10-TCTCONVERSI2 - CONVERSION D'ENERGIE INTERNE
-! 11-TCTCONVERSI3 - CONVERSION D'ENERGIE INTERNE INDUITE PAR LES PRECIPITATIONS
-! 12-TEPDIVFLUHOR - DIV. FLUX HORIZONTAL ENERGIE POTENTIELLE
-! 13-PPP          - MASSE D'AIR: CUMUL TEMPOREL
-! 14-TQLDIVFLUHOR - DIV. FLUX HORIZONTAL DE MASSE D'EAU LIQUIDE (SI LHDQLN=.TRUE.)
-! 15-TQNDIVFLUHOR - DIV. FLUX HORIZONTAL DE MASSE D'EAU NEIGEUSE (SI LHDQLN=.TRUE.)
-! 16-TQRDIVFLUHOR - DIV. FLUX HORIZONTAL DE MASSE RAIN
-! 17-TQSDIVFLUHOR - DIV. FLUX HORIZONTAL DE MASSE SNOW
-! 18-TQGDIVFLUHOR - DIV. FLUX HORIZONTAL DE MASSE GRAUPEL
-!       SI LHDMCI (DEBUT A L'INDICE NDHVV+NDHAHKD+1)
-!  1-TA1DIVFLUHOR - MOMENT ANGULAIRE A1: DIV. FLUX HORIZONTAL
-!  2-TA2DIVFLUHOR - MOMENT ANGULAIRE A2: DIV. FLUX HORIZONTAL
-!  3-TA3DIVFLUHOR - MOMENT ANGULAIRE A3: DIV. FLUX HORIZONTAL
-!  4-TA1ADJUST    - MOMENT ANGULAIRE A1: TERME D'AJUSTEMENT
-!  5-TA2ADJUST    - MOMENT ANGULAIRE A2: TERME D'AJUSTEMENT
-!  6-TA3ADJUST    - MOMENT ANGULAIRE A3: TERME D'AJUSTEMENT
-!  7-TA1NONAX     - MOMENT ANGULAIRE A1: MOMENT NON AXIAL
-!  8-TA2NONAX     - MOMENT ANGULAIRE A2: MOMENT NON AXIAL
-!       SI LHDENT (DEBUT A L'INDICE NDHVV+NDHAHKD+NDHAMCD+1)
-!  1-TSSDIVFLUHOR - ENTROPIE: DIV. FLUX HORIZONTAL
-!  2-TSSPRECICT   - ENTROPIE: EFFET PRECIPITATIONS SUR ENTHALPIE
-
-!*      1.3 FLUX DYNAMIQUES
-
-!       SI LHDHKS (DEBUT A L'INDICE NDHVV+NDHAVD+1)
-!  1-FPPFLUVERTDYN- VERTICAL DE MASSE D'AIR
-!  2-FQVFLUVERTDYN- VERTICAL DE VAPEUR D'EAU
-!  3-FUUFLUVERTDYN- VERTICAL DE QTE DE MVT ZONALE
-!  4-FVVFLUVERTDYN- VERTICAL DE QTE DE MVT MERIDIENNE
-!  5-FUUFLUDUAPLUI- QTE DE MVT ZONALE TRANSPORTEE PAR PRECIPITATIONS
-!  6-FVVFLUDUAPLUI- QTE DE MVT MERIDIENNE TRANSPORTEE PAR PRECIPITATIONS
-!  7-FKKFLUVERTDYN- VERTICAL D'ENERGIE CINETIQUE
-!  8-FKKFLUDUAPLUI- ENERGIE CINETIQUE TRANSPORTEE PAR PRECIPITATIONS
-!  9-FCTFLUVERTDYN- VERTICAL D'ENTHALPIE
-! 10-FEPCONVERSIFL- PSEUDO VERTICAL D'ENERGIE POTENTIELLE
-! 11-FQLFLUVERTDYN- VERTICAL DE MASSE D'EAU LIQUIDE (SI LHDQLN=.TRUE.)
-! 12-FQNFLUVERTDYN- VERTICAL DE MASSE D'EAU NEIGEUSE (SI LHDQLN=.TRUE.)
-! 13-FQRFLUVERTDYN- VERTICAL DE MASSE RAIN (SI LHDQLN=.TRUE.)
-! 14-FQSFLUVERTDYN- VERTICAL DE MASSE SNOW (SI LHDQLN=.TRUE.)
-! 15-FQGFLUVERTDYN- VERTICAL DE MASSE GRAUPEL (SI LHDQLN=.TRUE.)
-!       SI LHDMCI (DEBUT A L'INDICE NDHVV+NDHAVD+NDHBHKD+1)
-!  1-FA1FLUVERTDYN- MOMENT ANGULAIRE A1: FLUX VERTICAL DYNAMIQUE
-!  2-FA2FLUVERTDYN- MOMENT ANGULAIRE A2: FLUX VERTICAL DYNAMIQUE
-!  3-FA3FLUVERTDYN- MOMENT ANGULAIRE A3: FLUX VERTICAL DYNAMIQUE
-!  4-FA1GRAV      - MOMENT ANGULAIRE A1: FORCE DE GRAVITE
-!  5-FA2GRAV      - MOMENT ANGULAIRE A2: FORCE DE GRAVITE
-!  6-FA3GRAV      - MOMENT ANGULAIRE A3: FORCE DE GRAVITE
-!  7-FA1FLUDUAPLUI- MOMENT ANGULAIRE A1: FLUX DU AUX PRECIPITATIONS (NDPSFI=1)
-!  8-FA2FLUDUAPLUI- MOMENT ANGULAIRE A2: FLUX DU AUX PRECIPITATIONS (NDPSFI=1)
-!  9-FA3FLUDUAPLUI- MOMENT ANGULAIRE A3: FLUX DU AUX PRECIPITATIONS (NDPSFI=1)
-!       SI LHDENT (DEBUT A L'INDICE NDHVV+NDHAVD+NDHBHKD+NDHBMCD+1)
-!  1-FSSFLUVERTDYN-  ENTROPIE: FLUX VERTICAL DYNAMIQUE
-!  2-FSSPRECISS   -  ENTROPIE: EFFET DIRECT DES PRECIPITATIONS
-
-!*      1.4 FLUX PHYSIQUES
-
-!       SI LHDHKS (DEBUT A L'INDICE NDHVV+NDHFVD+1)
-!  1-FPPSUMFPL    - TOTAL DE PRECIPITATION, PERTE DE MASSE D'AIR
-!  2-FQVTUR       - TURBULENT DE VAPEUR D'EAU
-!  3-FQVTURCONV   - TURBULENT DE VAPEUR D'EAU DU A LA CONVECTION
-!  4-FQVPRECISTL  - DE PRECIPITATION STRATIFORME LIQUIDE
-!  5-FQVPRECISTN  - DE PRECIPITATION STRATIFORME NEIGEUSE
-!  6-FQVPRECISTG  - DE PRECIPITATION STRATIFORME GRESILE
-!  7-FQVPRECICOL  - DE PRECIPITATION CONVECTIVE LIQUIDE
-!  8-FQVPRECICON  - DE PRECIPITATION CONVECTIVE NEIGEUSE
-!  9-FQVPRECICOG  - DE PRECIPITATION CONVECTIVE GRESILE
-! 10-FQVTURQNEGAT - DE VAPEUR D'EAU COMPENSANT LES VALEURS < 0
-! 11-FUUTUR       - TURBULENT DE QTE DE MVT ZONALE
-! 12-FVVTUR       - TURBULENT DE QTE DE MVT MERIDIENNE
-!  6-FQVPRECICOL  - DE PRECIPITATION CONVECTIVE LIQUIDE
-!  7-FQVPRECICON  - DE PRECIPITATION CONVECTIVE NEIGEUSE
-!  8-FQVTURQNEGAT - DE VAPEUR D'EAU COMPENSANT LES VALEURS < 0
-!  9-FUUTUR       - TURBULENT DE QTE DE MVT ZONALE
-! 10-FVVTUR       - TURBULENT DE QTE DE MVT MERIDIENNE
-! 11-FUUTURCONV   - TURBULENT DE QTE DE MVT ZONALE DU A LA CONVECTION
-! 12-FVVTURCONV   - TURBULENT DE QTE DE MVT ZONALE DU A LA CONVECTION
-! 13-FUUONDEGREL  - TURBULENT DE QTE DE MVT MERIDIENNE DU AUX ONDES OROGRAPHIQUES
-! 14-FUUONDEGREL  - TURBULENT DE QTE DE MVT MERIDIENNE DU AUX ONDES OROGRAPHIQUES
-! 15-FCTTUR       - TURBULENT SEC D'ENTHALPIE
-! 16-FCTTURCONV   - TURBULENT CONVECTIF D'ENTHALPIE
-! 17-FCTRAYSOL1   - DE RAYONNEMENT SOLAIRE
-! 18-FCTRAYTER1   - DE RAYONNEMENT THERMIQUE
-! 19-FCTPRECISTL  - D'ENTHALPIE DU AUX PRECIPITATIONS STRATIFORMES LIQUIDES
-! 20-FCTPRECISTN  - D'ENTHALPIE DU AUX PRECIPITATIONS STRATIFORMES NEIGEUSES
-! 21-FCTPRECICOL  - D'ENTHALPIE DU AUX PRECIPITATIONS CONVECTIVES LIQUIDES
-! 22-FCTPRECICON  - D'ENTHALPIE DU AUX PRECIPITATIONS CONVECTIVES NEIGEUSES
-! 23-FCTPRECCSCOL - DE CHAL. SENS. DU AUX PRECIPITATIONS CONVECTIVES LIQUIDES
-! 24-FCTPRECCSCON - DE CHAL. SENS. DU AUX PRECIPITATIONS CONVECTIVES NEIGEUSES
-! 25-FCTPRECCSSTL - DE CHAL. SENS. DU AUX PRECIPITATIONS STRATIFORMES LIQUIDES
-! 26-FCTPRECCSSTN - DE CHAL. SENS. DU AUX PRECIPITATIONS STRATIFORMES NEIGEUSES
-! 27-FQLTUR       - TURBULENT D'EAU LIQUIDE (SI LHDQLN=.TRUE.)
-! 28-FQNTUR       - TURBULENT D'EAU NEIGEUSE (SI LHDQLN=.TRUE.)
-! 29-FQLTURCONV   - TURBULENT D'EAU LIQUIDE DU A LA CONVECTION (SI LHDQLN=.TRUE.)
-! 30-FQNTURCONV   - TURBULENT D'EAU NEIGEUSE DU A LA CONVECTION (SI LHDQLN=.TRUE.)
-! 31-FQLTURQNEGAT - D'EAU LIQUIDE COMPENSANT LES VALEURS < 0 (SI LHDQLN=.TRUE.)
-! 32-FQNTURQNEGAT - D'EAU NEIGEUSE COMPENSANT LES VALEURS < 0 (SI LHDQLN=.TRUE.)
-! 33-FQTCONDECOL  - DE CONDENSATION CONVECTIVE LIQUIDE (SI LHDQLN=.TRUE.)
-! 34-FQTCONDECON  - DE CONDENSATION CONVECTIVE NEIGEUSE (SI LHDQLN=.TRUE.)
-! 35-FQTCONDESTL  - DE CONDENSATION STRATIFORME LIQUIDE (SI LHDQLN=.TRUE.)
-! 36-FQTCONDESTN  - DE CONDENSATION STRATIFORME NEIGEUSE (SI LHDQLN=.TRUE.)
-! 37-FQRTURQNEGAT - pseudo-flux of rain to compensate <0
-! 38-FQSTURQNEGAT - pseudo-flux of snow to compensate <0
-! 39-FQTCONDESTR  - rain flux from cloudsc
-! 40-FQTCONDESTS  - snow flux from cloudsc
-!       SI LHDMCI (DEBUT A L'INDICE NDHVV+NDHFVD+NDHAHKP+1)
-!  1-FA1TUR       - MOMENT ANGULAIRE A1: DIFFUSION VERTICALE
-!  2-FA2TUR       - MOMENT ANGULAIRE A2: DIFFUSION VERTICALE
-!  3-FA3TUR       - MOMENT ANGULAIRE A3: DIFFUSION VERTICALE
-!  4-FA1TURCONV   - MOMENT ANGULAIRE A1: PROCESSUS CONVECTIFS TURBULENTS
-!  5-FA2TURCONV   - MOMENT ANGULAIRE A2: PROCESSUS CONVECTIFS TURBULENTS
-!  6-FA3TURCONV   - MOMENT ANGULAIRE A3: PROCESSUS CONVECTIFS TURBULENTS
-!  7-FA1ONDEGREL  - MOMENT ANGULAIRE A1: ONDES DE GRAVITE OROGRAPHIQUES
-!  8-FA2ONDEGREL  - MOMENT ANGULAIRE A2: ONDES DE GRAVITE OROGRAPHIQUES
-!  9-FA3ONDEGREL  - MOMENT ANGULAIRE A3: ONDES DE GRAVITE OROGRAPHIQUES
-!       SI LHDENT (DEBUT A L'INDICE NDHVV+NDHFVD+NDHAHKP+NDHAMCP+1)
-
-!*      1.5 TENDANCES PHYSIQUES
-
-!       SI LHDHKS (DEBUT A L'INDICE NDHVV+NDHFVD+NDHAVP+1)
-!  1-TKKDISSIPTUR - DISSIPATION DUE A LA TURBULENCE SECHE
-!  2-TKKDISSIPCONV- DISSIPATION DUE A LA CONVECTION
-!  3-TKKDISSIPGREL- DISSIPATION DUE AUX ONDES DE GRAVITE INDUITES PAR LE RELIEF
-!       SI LHDMCI (DEBUT A L'INDICE NDHVV+NDHFVD+NDHAVP+NDHBHKP+1)
-!       SI LHDENT (DEBUT A L'INDICE NDHVV+NDHFVD+NDHAVP+NDHBHKP+NDHBMCP+1)
-!  1-TSSDISSIPTUR - ENTROPIE: DISSIPATION DUE AUX PROCESSUS TURBULENTS SECS
-!                              TURBULENT DISSIPATION OF ENERGY
-!  2-TSSDISSIPCONV- ENTROPIE: DISSIPATION DUE AUX PROCESSUS TURBULENTS CONVECTIFS
-!                              CONVECTIVE DISSIPATION OF ENERGY
-!  3-TSSDISSIPGREL- ENTROPIE: DISSIPATION DUE AUX ONDES DE RELIEF
-!                              GRAVITY WAVE DRAG DISSIP. OF ENERGY
-!  4-TSSTURQVTOT  - ENTROPIE: PROCESSUS TURBULENTS SUR LA VAPEUR D'EAU
-!                              DIFFUSION OF HUMIDITY
-!  5-TSSRAY1      - ENTROPIE: EFFET DU RAYONNEMENT
-!                              RADIATION
-!  6-TSSTURCTTOT  - ENTROPIE: PROCESSUS TURBULENTS SUR L'ENTHALPIE
-!                              DIFFUSION OF ENTHALPY
-
-!*      2. VARIABLES AU SOL
-
-!*      2.1 VARIABLES
-!       SUR LES POINTS TERRE UNIQUEMENT
-
-!       SI LHDHKS
-!  1-S V          - SURFACE DE TERRE DU DOMAINE (MOYENNE PONDEREE DES PLSM)
-!  2-S V          - ENERGIE COUCHE SURFACE
-!  3-S V          - ENERGIE COUCHE PROFONDE
-!  4-S V          - HAUTEUR D'EAU COUCHE SURFACE
-!  5-S V          - HAUTEUR D'EAU COUCHE PROFONDE
-!  6-S V          - HAUTEUR DE NEIGE COUCHE SURFACE
-!       SI LHDMCI
-!       SI LHDENT
-
-!*      2.1a FREE-STYLE VARIABLES
-!       (NOTE: VALID OVER LAND AND SEA)
-
-!       IF LHDHKS.AND.LECMWF
-!  1-SVGFS        - 2-METRE TEMPERATURE
-!  2-SVGFS        - 2-METRE DEWPOINT
-!  3-SVGFS        - 10-METRE U-COMPONENT
-!  4-SVGFS        - 10-METRE V-COMPONENT
-!  5-SVGFS        - SKIN TEMPERATURE
-!  6-SVGFS        - FORECAST SURFACE ROUGHNESS
-!  7-SVGFS        - FORECAST SURFACE ROUGHNESS FOR HEAT
-!  8-SVGFS        - FORECAST ALBEDO
-!       IF LHDMCI
-!       IF LHDENT
-
-!*      2.2 TENDANCES/FLUX DYNAMIQUES
-!       SUR LES POINTS TERRE UNIQUEMENT
-
-!       SI LHDHKS
-!       SI LHDMCI
-!       SI LHDENT
-
-!*      2.3 TENDANCES/FLUX PHYSIQUES
-!       SUR LES POINTS TERRE UNIQUEMENT
-
-!       IF LHDHKS
-!  1-S FVRAC      - FLUX DE RAYONNEMENT SOLAIRE NET (GAIN ALGEBRIQUE POUR LA COUCHE S)
-!  2-S FVRAC      - FLUX DE RAYONNEMENT THERMIQUE NET
-!  3-S FVRAC      - FLUX DE CHALEUR LATENTE, EVAPORATION DE LIQUIDE
-!  4-S FVRAC      - FLUX DE CHALEUR LATENTE, EVAPORATION DE NEIGE
-!  5-S FVRAC      - FLUX DE CHALEUR SENSIBLE
-!  6-S FVRAC      - FLUX DE CHALEUR VERS SOL PROFOND (GAIN ALGEBRIQUE POUR COUCHE P)
-!  7-S FVRAC      - FLUX DE CHALEUR RESULTANT DE LA FONTE DE NEIGE (COUCHE S)
-!  8-S FVRAC      - FLUX DE PRECIPITATIONS STRATIFORMES LIQUIDES (GAIN POUR LA COUCHE S)
-!  9-S FVRAC      - FLUX DE PRECIPITATIONS STRATIFORMES NEIGEUSES
-! 10-S FVRAC      - FLUX DE PRECIPITATIONS STRATIFORMES GRESILES
-! 11-S FVRAC      - FLUX DE PRECIPITATIONS CONVECTIVES LIQUIDES
-! 12-S FVRAC      - FLUX DE PRECIPITATIONS CONVECTIVES NEIGEUSES
-! 13-S FVRAC      - FLUX DE PRECIPITATIONS CONVECTIVES GRESILES
-! 14-S FVRAC      - FLUX D'EVAPORATION DE LIQUIDE
-! 15-S FVRAC      - FLUX D'EVAPORATION DE NEIGE
-! 16-S FVRAC      - FLUX D'EAU VERS LA COUCHE PROFONDE (GAIN POUR COUCHE P)
-! 17-S FVRAC      - FLUX NEIGE VERS LIQUIDE (FONTE EN SURFACE, COUCHE S)
-! 18-S FVRAC      - TROP-PLEIN EN SURFACE (RUISSELLEMENT, PERDU)
-! 19-S FVRAC      - TROP-PLEIN EN PROFONDEUR (PERDU)
-!       IF LHDMCI
-!       IF LHDENT
-
-!*      2.3a FREE-STYLE FLUXES
-!       (NOTE: VALID OVER LAND AND SEA)
-
-!       IF LHDHKS.AND.LECMWF
-!  1-SFGFS        - SURFACE SOLAR RADIATION DOWNWARDS
-!  2-SFGFS        - SURFACE THERMAL RADIATION DOWNWARDS
-!       IF LHDMCI
-!       IF LHDENT
-
-END MODULE YOMTDDH
diff --git a/src/common/micro/mode_rain_ice_old_fast_rg.F90 b/src/common/micro/mode_rain_ice_old_fast_rg.F90
index 94d6dd5df476cca39fac84c5435f7a6931aee74d..3b17c5903c06a3cfe628e8d323425aab39858d5c 100644
--- a/src/common/micro/mode_rain_ice_old_fast_rg.F90
+++ b/src/common/micro/mode_rain_ice_old_fast_rg.F90
@@ -9,7 +9,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RG
 
   CONTAINS
 
-  SUBROUTINE RAIN_ICE_OLD_FAST_RG(D, CST, ICEP, ICED,                        &
+  SUBROUTINE RAIN_ICE_OLD_FAST_RG(D, CST, ICEP, ICED, BUCONF,                &
                                   PTSTEP, KSIZE, KRR,                        &
                                   OCND2, LTIW, GMICRO,                       &
                                   PRHODJ, PTHS,                              &
@@ -19,7 +19,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RG
                                   PCJ, PKA, PDV,                             &
                                   PLBDAR, PLBDAG, PLBDAS,                    &
                                   PTIW, PZT, PRES,                          &
-                                  YDDDH, YDLDDH, YDMDDH)
+                                  TBUDGETS, KBUDGETS)
 
     USE PARKIND1,            ONLY: JPRB
     USE YOMHOOK,             ONLY: LHOOK, DR_HOOK
@@ -28,12 +28,9 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RG
     USE MODD_RAIN_ICE_PARAM, ONLY: RAIN_ICE_PARAM_T
     USE MODD_RAIN_ICE_DESCR, ONLY: RAIN_ICE_DESCR_T
 
-    USE MODE_BUDGET_PHY,     ONLY: BUDGET_DDH
-    USE MODD_BUDGET,         ONLY: LBUDGET_TH, LBUDGET_RG, LBUDGET_RR, LBUDGET_RC, &
-                                   LBUDGET_RI, LBUDGET_RS, LBUDGET_RH
-    USE DDH_MIX,             ONLY: TYP_DDH
-    USE YOMLDDH,             ONLY: TLDDH
-    USE YOMMDDH,             ONLY: TMDDH
+    USE MODE_BUDGET_PHY,     ONLY: BUDGET_STORE_INIT_PHY, BUDGET_STORE_END_PHY
+    USE MODD_BUDGET,         ONLY: TBUDGETDATA, TBUDGETCONF_t, LBU_ENABLE, NBUDGET_TH, NBUDGET_RG, NBUDGET_RR, NBUDGET_RC, &
+                                   NBUDGET_RI, NBUDGET_RS, NBUDGET_RH
 
     IMPLICIT NONE
 
@@ -41,6 +38,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RG
     TYPE(CST_T),            INTENT(IN) :: CST
     TYPE(RAIN_ICE_PARAM_T), INTENT(IN) :: ICEP
     TYPE(RAIN_ICE_DESCR_t), INTENT(IN) :: ICED
+    TYPE(TBUDGETCONF_t),      INTENT(IN)    :: BUCONF
 
     REAL,    INTENT(IN) :: PTSTEP  ! Double Time step
     INTEGER, INTENT(IN) :: KSIZE
@@ -89,9 +87,8 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RG
     REAL, DIMENSION(KSIZE), INTENT(IN)    :: PZT      ! Temperature
     REAL, DIMENSION(KSIZE), INTENT(IN)    :: PRES    ! Pressure
 
-    TYPE(TYP_DDH),          INTENT(INOUT) :: YDDDH
-    TYPE(TLDDH),            INTENT(IN)    :: YDLDDH
-    TYPE(TMDDH),            INTENT(IN)    :: YDMDDH
+    TYPE(TBUDGETDATA), DIMENSION(KBUDGETS), INTENT(INOUT) :: TBUDGETS
+    INTEGER, INTENT(IN) :: KBUDGETS
 
     LOGICAL, DIMENSION(KSIZE) :: GDRY ! Test where to compute dry growth
 
@@ -120,6 +117,11 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RG
 !
     IF (LHOOK) CALL DR_HOOK('RAIN_ICE_OLD:RAIN_ICE_FAST_RG',0,ZHOOK_HANDLE)
 
+    IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TH), 'CFRZ', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RR), 'CFRZ', UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RI), 'CFRZ', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RG), 'CFRZ', UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+
     ZZW1(:,3:4) = 0.0
     DO JK = 1, KSIZE
       IF ((PRIT(JK) > ICED%XRTMIN(4) .AND. PRIT(JK)>ICEP%XFRMIN(2)) .AND. &
@@ -139,17 +141,23 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RG
       END IF
     END DO
 
-    IF (LBUDGET_TH) CALL BUDGET_DDH(UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:), &
-                                     4,'CFRZ_BU_RTH',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RR) CALL BUDGET_DDH(UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), &
-                                     8,'CFRZ_BU_RRR',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RI) CALL BUDGET_DDH(UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), &
-                                     9,'CFRZ_BU_RRI',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RG) CALL BUDGET_DDH(UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), &
-                                    11,'CFRZ_BU_RRG',YDDDH, YDLDDH, YDMDDH)
+    IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TH), 'CFRZ', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RR), 'CFRZ', UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RI), 'CFRZ', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RG), 'CFRZ', UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
 
 !*       6.2    compute the Dry growth case
 
+    IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TH), 'WETG', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RC), 'WETG', UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RR), 'WETG', UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RI), 'WETG', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RS), 'WETG', UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RG), 'WETG', UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF ( KRR == 7 ) THEN
+      IF (BUCONF%LBUDGET_RH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RH), 'WETG', UNPACK(PRHS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    END IF
+
     ZZW1(:,:) = 0.0
     DO JK = 1, KSIZE
       IF ((PRGT(JK) > ICED%XRTMIN(6)) .AND. &
@@ -284,7 +292,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RG
     ZZW(:) = 0.0
     ZRWETG(:) = 0.0
 
-    DO JK = 1, JK
+    DO JK = 1, KSIZE
       IF (PRGT(JK)>ICED%XRTMIN(6)) THEN
         ZZW1(JK,5) = MIN( PRIS(JK),                                    &
                     ZZW1(JK,2) / (ICEP%XCOLIG*EXP(ICEP%XCOLEXIG*(PZT(JK)-CST%XTT)) ) ) ! RIWETG
@@ -364,23 +372,23 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RG
       END DO
     END IF
 
-    IF (LBUDGET_TH) CALL BUDGET_DDH(UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:), &
-                                     4,'WETG_BU_RTH',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RC) CALL BUDGET_DDH(UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                     7,'WETG_BU_RRC',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RR) CALL BUDGET_DDH(UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                     8,'WETG_BU_RRR',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RI) CALL BUDGET_DDH(UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                     9,'WETG_BU_RRI',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RS) CALL BUDGET_DDH(UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                    10,'WETG_BU_RRS',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RG) CALL BUDGET_DDH(UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                    11,'WETG_BU_RRG',YDDDH, YDLDDH, YDMDDH)
+    IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TH), 'WETG', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RC), 'WETG', UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RR), 'WETG', UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RI), 'WETG', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RS), 'WETG', UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RG), 'WETG', UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
     IF ( KRR == 7 ) THEN
-      IF (LBUDGET_RH) CALL BUDGET_DDH(UNPACK(PRHS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                      12,'WETG_BU_RRH',YDDDH, YDLDDH, YDMDDH)
+      IF (BUCONF%LBUDGET_RH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RH), 'WETG', UNPACK(PRHS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
     END IF
 
+    IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TH), 'DRYG', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RC), 'DRYG', UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RR), 'DRYG', UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RI), 'DRYG', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RS), 'DRYG', UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RG), 'DRYG', UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+
     DO JK = 1, KSIZE
       IF (PRGT(JK) > ICED%XRTMIN(6) .AND. &
           PRGT(JK) > ICEP%XFRMIN(4) .AND. &
@@ -398,21 +406,19 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RG
       END IF
     END DO
 
-    IF (LBUDGET_TH) CALL BUDGET_DDH(UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:),   &
-                                     4,'DRYG_BU_RTH',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RC) CALL BUDGET_DDH(UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                     7,'DRYG_BU_RRC',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RR) CALL BUDGET_DDH(UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                     8,'DRYG_BU_RRR',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RI) CALL BUDGET_DDH(UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                     9,'DRYG_BU_RRI',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RS) CALL BUDGET_DDH(UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                    10,'DRYG_BU_RRS',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RG) CALL BUDGET_DDH(UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                    11,'DRYG_BU_RRG',YDDDH, YDLDDH, YDMDDH)
+    IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TH), 'DRYG', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RC), 'DRYG', UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RR), 'DRYG', UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RI), 'DRYG', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RS), 'DRYG', UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RG), 'DRYG', UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
 
 !*       6.5    Melting of the graupeln
 
+    IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TH), 'GMLT', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RR), 'GMLT', UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RG), 'GMLT', UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+
     ZZW(:) = 0.0
     IF (LTIW) THEN
 
@@ -466,12 +472,10 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RG
       END DO
     ENDIF
 
-    IF (LBUDGET_TH) CALL BUDGET_DDH(UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:), &
-                                     4,'GMLT_BU_RTH',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RR) CALL BUDGET_DDH(UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                     8,'GMLT_BU_RRR',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RG) CALL BUDGET_DDH(UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                    11,'GMLT_BU_RRG',YDDDH, YDLDDH, YDMDDH)
+    IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TH), 'GMLT', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RR), 'GMLT', UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RG), 'GMLT', UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+
     IF (LHOOK) CALL DR_HOOK('RAIN_ICE_OLD:RAIN_ICE_FAST_RG',1,ZHOOK_HANDLE)
 
   END SUBROUTINE RAIN_ICE_OLD_FAST_RG
diff --git a/src/common/micro/mode_rain_ice_old_fast_rh.F90 b/src/common/micro/mode_rain_ice_old_fast_rh.F90
index 6f1a04973ba38d3eae05efecc373cffa89f0fd34..0416986331ab47c8a34d744cdadcd078c59bb089 100644
--- a/src/common/micro/mode_rain_ice_old_fast_rh.F90
+++ b/src/common/micro/mode_rain_ice_old_fast_rh.F90
@@ -9,7 +9,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RH
 
   CONTAINS
 
-  SUBROUTINE RAIN_ICE_OLD_FAST_RH(D, CST, ICEP, ICED, &
+  SUBROUTINE RAIN_ICE_OLD_FAST_RH(D, CST, ICEP, ICED, BUCONF, &
                                   KSIZE, KRR, &
                                   GMICRO, &
                                   PTHS, PRHODJ, &
@@ -19,7 +19,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RH
                                   PLBDAS, PLBDAG, PLBDAH, &
                                   PCJ, PKA, PDV, &
                                   PZT, PRES, &
-                                  YDDDH, YDLDDH, YDMDDH)
+                                  TBUDGETS, KBUDGETS)
 
     USE PARKIND1,            ONLY: JPRB
     USE YOMHOOK,             ONLY: LHOOK, DR_HOOK
@@ -28,12 +28,9 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RH
     USE MODD_RAIN_ICE_PARAM, ONLY: RAIN_ICE_PARAM_T
     USE MODD_RAIN_ICE_DESCR, ONLY: RAIN_ICE_DESCR_T
 
-    USE MODE_BUDGET_PHY,     ONLY: BUDGET_DDH
-    USE MODD_BUDGET,         ONLY: LBUDGET_TH, LBUDGET_RG, LBUDGET_RR, LBUDGET_RC, &
-                                   LBUDGET_RI, LBUDGET_RS, LBUDGET_RH
-    USE DDH_MIX,             ONLY: TYP_DDH
-    USE YOMLDDH,             ONLY: TLDDH
-    USE YOMMDDH,             ONLY: TMDDH
+    USE MODE_BUDGET_PHY,     ONLY: BUDGET_STORE_INIT_PHY, BUDGET_STORE_END_PHY
+    USE MODD_BUDGET,         ONLY: TBUDGETDATA, TBUDGETCONF_t, LBU_ENABLE, NBUDGET_TH, NBUDGET_RG, NBUDGET_RR, NBUDGET_RC, &
+                                   NBUDGET_RI, NBUDGET_RS, NBUDGET_RH
 
     IMPLICIT NONE
 
@@ -41,6 +38,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RH
     TYPE(CST_T),            INTENT(IN) :: CST
     TYPE(RAIN_ICE_PARAM_T), INTENT(IN) :: ICEP
     TYPE(RAIN_ICE_DESCR_t), INTENT(IN) :: ICED
+    TYPE(TBUDGETCONF_t),      INTENT(IN)    :: BUCONF
 
     INTEGER, INTENT(IN) :: KSIZE
     INTEGER, INTENT(IN) :: KRR
@@ -82,9 +80,8 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RH
     REAL, DIMENSION(KSIZE), INTENT(IN)    :: PZT      ! Temperature
     REAL, DIMENSION(KSIZE), INTENT(IN)    :: PRES     ! Pressure
 
-    TYPE(TYP_DDH),          INTENT(INOUT) :: YDDDH
-    TYPE(TLDDH),            INTENT(IN)    :: YDLDDH
-    TYPE(TMDDH),            INTENT(IN)    :: YDMDDH
+    TYPE(TBUDGETDATA), DIMENSION(KBUDGETS), INTENT(INOUT) :: TBUDGETS
+    INTEGER, INTENT(IN) :: KBUDGETS
 
     LOGICAL, DIMENSION(KSIZE) :: GWET  ! Test where to compute wet growth
     LOGICAL, DIMENSION(KSIZE) :: GHAIL ! Test where to compute hail growth
@@ -111,6 +108,14 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RH
 
     GHAIL(:) = PRHT(:)>ICED%XRTMIN(7)
     IHAIL = COUNT(GHAIL(:))
+
+    IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TH), 'WETH', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RC), 'WETH', UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RR), 'WETH', UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RI), 'WETH', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RS), 'WETH', UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RG), 'WETH', UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RH), 'WETH', UNPACK(PRHS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
 !
     IF( IHAIL>0 ) THEN
 !
@@ -286,23 +291,20 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RH
       END DO
     END IF
 
-    IF (LBUDGET_TH) CALL BUDGET_DDH(UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:), &
-                                     4,'WETH_BU_RTH',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RC) CALL BUDGET_DDH(UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                     7,'WETH_BU_RRC',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RR) CALL BUDGET_DDH(UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                     8,'WETH_BU_RRR',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RI) CALL BUDGET_DDH(UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                     9,'WETH_BU_RRI',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RS) CALL BUDGET_DDH(UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                    10,'WETH_BU_RRS',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RG) CALL BUDGET_DDH(UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                    11,'WETH_BU_RRG',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RH) CALL BUDGET_DDH(UNPACK(PRHS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                    12,'WETH_BU_RRH',YDDDH, YDLDDH, YDMDDH)
+    IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TH), 'WETH', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RC), 'WETH', UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RR), 'WETH', UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RI), 'WETH', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RS), 'WETH', UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RG), 'WETH', UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RH), 'WETH', UNPACK(PRHS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
 
 !*       7.45   Conversion of the hailstones into graupel
 
+    IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TH), 'HMLT', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RR), 'HMLT', UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RH), 'HMLT', UNPACK(PRHS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+
     IF( IHAIL>0 ) THEN
 !
 !*       7.5    Melting of the hailstones
@@ -329,12 +331,9 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RH
       END DO
     END IF
 
-    IF (LBUDGET_TH) CALL BUDGET_DDH(UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:),&
-                                     4,'HMLT_BU_RTH',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RR) CALL BUDGET_DDH(UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), &
-                                     8,'HMLT_BU_RRR',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RH) CALL BUDGET_DDH(UNPACK(PRHS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), &
-                                    12,'HMLT_BU_RRH',YDDDH, YDLDDH, YDMDDH)
+    IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TH), 'HMLT', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RR), 'HMLT', UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RH), 'HMLT', UNPACK(PRHS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
 
     IF (LHOOK) CALL DR_HOOK('RAIN_ICE_OLD:RAIN_ICE_FAST_RH',1,ZHOOK_HANDLE)
 
diff --git a/src/common/micro/mode_rain_ice_old_fast_ri.F90 b/src/common/micro/mode_rain_ice_old_fast_ri.F90
index fd985533253a648fa223d84d66a5fa489a01380a..16cdc370e02bf8bb902a84587bbd73cf62471fa3 100644
--- a/src/common/micro/mode_rain_ice_old_fast_ri.F90
+++ b/src/common/micro/mode_rain_ice_old_fast_ri.F90
@@ -9,7 +9,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RI
 
   CONTAINS
 
-  SUBROUTINE RAIN_ICE_OLD_FAST_RI(D, CST, ICEP, ICED,           &
+  SUBROUTINE RAIN_ICE_OLD_FAST_RI(D, CST, ICEP, ICED, BUCONF,   &
                                   PTSTEP, KSIZE,                &
                                   OCND2, LMODICEDEP, GMICRO,    &
                                   PRHODJ, PTHS,                 &
@@ -22,7 +22,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RI
                                   PZT, PRES, PSSI,             &
                                   PSIFRC, PESI,                 &
                                   PCITRED, PCITRED23, PDICRIT,  &
-                                  YDDDH, YDLDDH, YDMDDH)
+                                  TBUDGETS, KBUDGETS)
 
     USE PARKIND1,            ONLY: JPRB
     USE YOMHOOK,             ONLY: LHOOK, DR_HOOK
@@ -33,11 +33,9 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RI
 
     USE MODE_RAIN_ICE_OLD_ICENUMBER2, ONLY: ICENUMBER2
 
-    USE MODE_BUDGET_PHY,     ONLY: BUDGET_DDH
-    USE MODD_BUDGET,         ONLY: LBUDGET_TH, LBUDGET_RC, LBUDGET_RI
-    USE DDH_MIX,             ONLY: TYP_DDH
-    USE YOMLDDH,             ONLY: TLDDH
-    USE YOMMDDH,             ONLY: TMDDH
+    USE MODE_BUDGET_PHY,     ONLY: BUDGET_STORE_INIT_PHY, BUDGET_STORE_END_PHY
+    USE MODD_BUDGET,         ONLY: TBUDGETDATA, TBUDGETCONF_t, &
+                                   LBU_ENABLE, NBUDGET_TH, NBUDGET_RC, NBUDGET_RI
 
     IMPLICIT NONE
 
@@ -45,6 +43,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RI
     TYPE(CST_T),            INTENT(IN) :: CST
     TYPE(RAIN_ICE_PARAM_T), INTENT(IN) :: ICEP
     TYPE(RAIN_ICE_DESCR_t), INTENT(IN) :: ICED
+    TYPE(TBUDGETCONF_t),      INTENT(IN)    :: BUCONF
 
     REAL,    INTENT(IN) :: PTSTEP  ! Double Time step
     INTEGER, INTENT(IN) :: KSIZE
@@ -92,9 +91,8 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RI
     REAL, INTENT(IN) :: PCITRED23
     REAL, INTENT(IN) :: PDICRIT
 
-    TYPE(TYP_DDH), INTENT(INOUT) :: YDDDH
-    TYPE(TLDDH),   INTENT(IN)    :: YDLDDH
-    TYPE(TMDDH),   INTENT(IN)    :: YDMDDH
+    TYPE(TBUDGETDATA), DIMENSION(KBUDGETS), INTENT(INOUT) :: TBUDGETS
+    INTEGER, INTENT(IN) :: KBUDGETS
 
     REAL, DIMENSION(KSIZE) :: ZCRYSHA ! Ice crystal habit factor
     REAL, DIMENSION(KSIZE) :: ZCI2S   ! factor to turn cloud ice with few lagre crystals into snow
@@ -115,6 +113,10 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RI
 
     IF (LHOOK) CALL DR_HOOK('RAIN_ICE_OLD:RAIN_ICE_FAST_RI',0,ZHOOK_HANDLE)
 
+    IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TH), 'IMLT', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RC), 'IMLT', UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RI), 'IMLT', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+
     ZZW(:) = 0.0
     DO JK = 1, KSIZE
       IF ((PRIS(JK)>0.0) .AND. (PZT(JK)>CST%XTT)) THEN
@@ -126,15 +128,16 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RI
       END IF
     END DO
 
-    IF (LBUDGET_TH) CALL BUDGET_DDH(UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:),   &
-                                     4,'IMLT_BU_RTH',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RC) CALL BUDGET_DDH(UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                     7,'IMLT_BU_RRC',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RI) CALL BUDGET_DDH(UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                     9,'IMLT_BU_RRI',YDDDH, YDLDDH, YDMDDH)
+    IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TH), 'IMLT', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RC), 'IMLT', UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RI), 'IMLT', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
 
 !*       7.2    Bergeron-Findeisen effect: RCBERI
 
+    IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TH), 'BERFI', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RC), 'BERFI', UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RI), 'BERFI', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+
     ZZW(:) = 0.0
     IF(OCND2)THEN
 
@@ -218,12 +221,9 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RI
       END DO
     ENDIF
 
-    IF (LBUDGET_TH) CALL BUDGET_DDH(UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:),   &
-                                     4,'BERFI_BU_RTH',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RC) CALL BUDGET_DDH(UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                     7,'BERFI_BU_RRC',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RI) CALL BUDGET_DDH(UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                     9,'BERFI_BU_RRI',YDDDH, YDLDDH, YDMDDH)
+    IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TH), 'BERFI', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RC), 'BERFI', UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RI), 'BERFI', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
 
     IF (LHOOK) CALL DR_HOOK('RAIN_ICE_OLD:RAIN_ICE_FAST_RI',1,ZHOOK_HANDLE)
 
diff --git a/src/common/micro/mode_rain_ice_old_fast_rs.F90 b/src/common/micro/mode_rain_ice_old_fast_rs.F90
index 272c52e64e61781a87355b5cb995856a14f6107e..4fc69b2169f665fdebd9ea1b2b2a9f347510a32e 100644
--- a/src/common/micro/mode_rain_ice_old_fast_rs.F90
+++ b/src/common/micro/mode_rain_ice_old_fast_rs.F90
@@ -9,7 +9,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RS
 
   CONTAINS
 
-  SUBROUTINE RAIN_ICE_OLD_FAST_RS(D, CST, ICEP, ICED,                 &
+  SUBROUTINE RAIN_ICE_OLD_FAST_RS(D, CST, ICEP, ICED, BUCONF,         &
                                   PTSTEP, KSIZE, KRR, GMICRO,         &
                                   PRHODJ, PTHS,                       &
                                   ZRVT, ZRCT, ZRRT, ZRST,             &
@@ -17,7 +17,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RS
                                   ZRHODREF, ZRHODJ, ZLSFACT, ZLVFACT, &
                                   ZCJ, ZKA, ZDV,                      &
                                   ZLBDAR, ZLBDAS, ZCOLF, ZPRES, ZZT,  &
-                                  YDDDH, YDLDDH, YDMDDH)
+                                  TBUDGETS, KBUDGETS)
 
     USE PARKIND1,            ONLY: JPRB
     USE YOMHOOK,             ONLY: LHOOK, DR_HOOK
@@ -26,11 +26,9 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RS
     USE MODD_RAIN_ICE_PARAM, ONLY: RAIN_ICE_PARAM_T
     USE MODD_RAIN_ICE_DESCR, ONLY: RAIN_ICE_DESCR_T
 
-    USE MODE_BUDGET_PHY, ONLY: BUDGET_DDH
-    USE MODD_BUDGET,     ONLY: LBUDGET_TH, LBUDGET_RG, LBUDGET_RR, LBUDGET_RC, LBUDGET_RS
-    USE DDH_MIX,         ONLY: TYP_DDH
-    USE YOMLDDH,         ONLY: TLDDH
-    USE YOMMDDH,         ONLY: TMDDH
+    USE MODE_BUDGET_PHY, ONLY: BUDGET_STORE_INIT_PHY, BUDGET_STORE_END_PHY
+    USE MODD_BUDGET,     ONLY: TBUDGETDATA, TBUDGETCONF_t, &
+                               LBU_ENABLE, NBUDGET_TH, NBUDGET_RG, NBUDGET_RR, NBUDGET_RC, NBUDGET_RS
 
     IMPLICIT NONE
 
@@ -38,6 +36,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RS
     TYPE(CST_T),            INTENT(IN) :: CST 
     TYPE(RAIN_ICE_PARAM_T), INTENT(IN) :: ICEP
     TYPE(RAIN_ICE_DESCR_t), INTENT(IN) :: ICED
+    TYPE(TBUDGETCONF_t),      INTENT(IN)    :: BUCONF
 
     REAL,    INTENT(IN) :: PTSTEP  ! Double Time step
     INTEGER, INTENT(IN) :: KSIZE
@@ -76,9 +75,8 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RS
     REAL, DIMENSION(KSIZE), INTENT(IN)    :: ZZT      ! Temperature
     REAL, DIMENSION(KSIZE), INTENT(IN)    :: ZPRES    ! Pressure
 
-    TYPE(TYP_DDH),        INTENT(INOUT)     :: YDDDH
-    TYPE(TLDDH),          INTENT(IN)        :: YDLDDH
-    TYPE(TMDDH),          INTENT(IN)        :: YDMDDH
+    TYPE(TBUDGETDATA), DIMENSION(KBUDGETS), INTENT(INOUT) :: TBUDGETS
+    INTEGER, INTENT(IN) :: KBUDGETS
 
     LOGICAL, DIMENSION(KSIZE) :: GMASK ! Test where to compute riming/accretion
 
@@ -101,6 +99,12 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RS
 !*       5.1    cloud droplet riming of the aggregates
 !
     IF (LHOOK) CALL DR_HOOK('RAIN_ICE_OLD:RAIN_ICE_FAST_RS',0,ZHOOK_HANDLE)
+
+    IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TH), 'RIM', UNPACK(ZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RC), 'RIM', UNPACK(ZRCS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RS), 'RIM', UNPACK(ZRSS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RG), 'RIM', UNPACK(ZRGS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+
     ZZW1(:,:) = 0.0
 !
     GMASK(:) = (ZRCT(:)>ICED%XRTMIN(2)) .AND. (ZRST(:)>ICED%XRTMIN(5)) .AND. &
@@ -173,17 +177,18 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RS
       END DO
     END IF
 
-    IF (LBUDGET_TH) CALL BUDGET_DDH(UNPACK(ZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:),   &
-                                     4,'RIM_BU_RTH',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RC) CALL BUDGET_DDH(UNPACK(ZRCS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                     7,'RIM_BU_RRC',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RS) CALL BUDGET_DDH(UNPACK(ZRSS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                    10,'RIM_BU_RRS',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RG) CALL BUDGET_DDH(UNPACK(ZRGS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                    11,'RIM_BU_RRG',YDDDH, YDLDDH, YDMDDH)
+    IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TH), 'RIM', UNPACK(ZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RC), 'RIM', UNPACK(ZRCS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RS), 'RIM', UNPACK(ZRSS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RG), 'RIM', UNPACK(ZRGS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
 
 !*       5.2    rain accretion onto the aggregates
 
+    IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TH), 'ACC', UNPACK(ZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RR), 'ACC', UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RS), 'ACC', UNPACK(ZRSS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RG), 'ACC', UNPACK(ZRGS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+
     ZZW1(:,2:3) = 0.0
     GMASK(:) = (ZRRT(:) > ICED%XRTMIN(3)) .AND. &
               (ZRST(:) > ICED%XRTMIN(5)) .AND. &
@@ -293,21 +298,16 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RS
       END DO
     END IF
 
-    IF (LBUDGET_TH) CALL BUDGET_DDH (                                     &
-                 UNPACK(ZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:), &
-                                                             4,'ACC_BU_RTH',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RR) CALL BUDGET_DDH (                                      &
-                     UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), &
-                                                             8,'ACC_BU_RRR',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RS) CALL BUDGET_DDH (                                      &
-                     UNPACK(ZRSS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), &
-                                                            10,'ACC_BU_RRS',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RG) CALL BUDGET_DDH (                                      &
-                     UNPACK(ZRGS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), &
-                                                            11,'ACC_BU_RRG',YDDDH, YDLDDH, YDMDDH)
+    IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TH), 'ACC', UNPACK(ZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RR), 'ACC', UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RS), 'ACC', UNPACK(ZRSS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RG), 'ACC', UNPACK(ZRGS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
 
 !*       5.3    Conversion-Melting of the aggregates
 
+    IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RS), 'CMEL', UNPACK(ZRSS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RG), 'CMEL', UNPACK(ZRGS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+
     ZZW(:) = 0.0
     DO JK = 1, KSIZE
       IF ((ZRST(JK)>ICED%XRTMIN(5)) .AND. (ZRSS(JK)>0.0) .AND. (ZZT(JK)>CST%XTT)) THEN
@@ -333,10 +333,8 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RS
       END IF
     END DO
 
-    IF (LBUDGET_RS) CALL BUDGET_DDH(UNPACK(ZRSS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), &
-                                    10,'CMEL_BU_RRS',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RG) CALL BUDGET_DDH(UNPACK(ZRGS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), &
-                                    11,'CMEL_BU_RRG',YDDDH, YDLDDH, YDMDDH)
+    IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RS), 'CMEL', UNPACK(ZRSS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RG), 'CMEL', UNPACK(ZRGS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
 
     IF (LHOOK) CALL DR_HOOK('RAIN_ICE_OLD:RAIN_ICE_FAST_RS',1,ZHOOK_HANDLE)
 
diff --git a/src/common/micro/mode_rain_ice_old_sedimentation_stat.F90 b/src/common/micro/mode_rain_ice_old_sedimentation_stat.F90
index 0ae2581815af5e66c03bd8ec9eeb62cf3c40aa96..ea89a3626600ff763f09976e2a467e5962e0a594 100644
--- a/src/common/micro/mode_rain_ice_old_sedimentation_stat.F90
+++ b/src/common/micro/mode_rain_ice_old_sedimentation_stat.F90
@@ -249,9 +249,7 @@ MODULE MODE_RAIN_ICE_OLD_SEDIMENTATION_STAT
     ENDDO
 
     DO JK = D%NKTB , D%NKTE
-      DO JI = D%NIB, D%NIE
-        PRRS(:,JK) = PRRS(:,JK) + ZW(:,JK)*(ZWSED(:,JK+KKL)-ZWSED(:,JK))
-      ENDDO
+      PRRS(:,JK) = PRRS(:,JK) + ZW(:,JK)*(ZWSED(:,JK+KKL)-ZWSED(:,JK))
     ENDDO
     IF (PRESENT(PFPR)) THEN
       DO JK = D%NKTB , D%NKTE
diff --git a/src/common/micro/mode_rain_ice_old_slow.F90 b/src/common/micro/mode_rain_ice_old_slow.F90
index ed2de7de3197d3b6054f91d6e833a85c8bc1ac92..0b26730c45e9dc48cb0e31ecf5c2c8cbf93b1f63 100644
--- a/src/common/micro/mode_rain_ice_old_slow.F90
+++ b/src/common/micro/mode_rain_ice_old_slow.F90
@@ -9,7 +9,7 @@ MODULE MODE_RAIN_ICE_OLD_SLOW
 
   CONTAINS
 
-  SUBROUTINE RAIN_ICE_OLD_SLOW(D, CST, ICED, ICEP,                 &
+  SUBROUTINE RAIN_ICE_OLD_SLOW(D, CST, ICED, ICEP, BUCONF,         &
                                KSIZE, OCND2, LMODICEDEP,           &
                                PTSTEP, ZREDSN,                     &
                                GMICRO, PRHODJ, PTHS, PRVS,         &
@@ -21,7 +21,7 @@ MODULE MODE_RAIN_ICE_OLD_SLOW
                                PLBDAG, PKA, PDV,                   &
                                PAI, PCJ, PAA2, PBB3,               &
                                ZDICRIT, ZREDGR, ZKVO,              &
-                               YDDDH, YDLDDH, YDMDDH)
+                               TBUDGETS, KBUDGETS)
 
     USE PARKIND1,             ONLY: JPRB
     USE YOMHOOK,              ONLY: LHOOK, DR_HOOK
@@ -30,13 +30,10 @@ MODULE MODE_RAIN_ICE_OLD_SLOW
     USE MODD_RAIN_ICE_PARAM,  ONLY: RAIN_ICE_PARAM_T
     USE MODD_RAIN_ICE_DESCR,  ONLY: RAIN_ICE_DESCR_T
 
-    USE MODE_BUDGET_PHY,      ONLY: BUDGET_DDH
-    USE DDH_MIX,              ONLY: TYP_DDH
-    USE YOMLDDH,              ONLY: TLDDH
-    USE YOMMDDH,              ONLY: TMDDH
+    USE MODE_BUDGET_PHY,      ONLY: BUDGET_STORE_INIT_PHY, BUDGET_STORE_END_PHY
 
-    USE MODD_BUDGET,     ONLY: LBUDGET_TH, LBUDGET_RG, LBUDGET_RR, LBUDGET_RC, &
-                               LBUDGET_RI, LBUDGET_RS, LBUDGET_RV
+    USE MODD_BUDGET,     ONLY: TBUDGETDATA, TBUDGETCONF_t, LBU_ENABLE, NBUDGET_TH, NBUDGET_RG, NBUDGET_RR, NBUDGET_RC, &
+                               NBUDGET_RI, NBUDGET_RS, NBUDGET_RV
 
     USE MODE_RAIN_ICE_OLD_ICENUMBER2, ONLY: ICENUMBER2
 
@@ -46,6 +43,7 @@ MODULE MODE_RAIN_ICE_OLD_SLOW
     TYPE(CST_T), INTENT(IN)            :: CST
     TYPE(RAIN_ICE_PARAM_T), INTENT(IN) :: ICEP
     TYPE(RAIN_ICE_DESCR_T), INTENT(IN) :: ICED
+    TYPE(TBUDGETCONF_t),      INTENT(IN)    :: BUCONF
 
     INTEGER, INTENT(IN) :: KSIZE
     LOGICAL, INTENT(IN) :: OCND2
@@ -98,9 +96,8 @@ MODULE MODE_RAIN_ICE_OLD_SLOW
     REAL, INTENT(IN) :: ZDICRIT, ZREDGR ! Possible reduction of the rate of graupel,snow growth
     REAL, INTENT(IN) :: ZKVO ! factor used for caluclate maximum mass in the ice distubution.
 
-    TYPE(TYP_DDH),        INTENT(INOUT)   :: YDDDH
-    TYPE(TLDDH),          INTENT(IN)      :: YDLDDH
-    TYPE(TMDDH),          INTENT(IN)      :: YDMDDH
+    TYPE(TBUDGETDATA), DIMENSION(KBUDGETS), INTENT(INOUT) :: TBUDGETS
+    INTEGER, INTENT(IN) :: KBUDGETS
 !
 !*       3.2     compute the homogeneous nucleation source: RCHONI
 !
@@ -120,6 +117,10 @@ MODULE MODE_RAIN_ICE_OLD_SLOW
     ZINVTSTEP=1./PTSTEP
     ZZW(:) = 0.0
 
+    IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TH), 'HON', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RC), 'HON', UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RI), 'HON', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+
     DO JL = 1, KSIZE
       IF ((PZT(JL)<CST%XTT-35.0) .AND. (PRCT(JL)>ICED%XRTMIN(2)) .AND. (PRCS(JL)>0.)) THEN
         ZZW(JL) = MIN( PRCS(JL),ICEP%XHON*PRHODREF(JL)*PRCT(JL)       &
@@ -130,15 +131,16 @@ MODULE MODE_RAIN_ICE_OLD_SLOW
       END IF
     END DO
 
-    IF (LBUDGET_TH) CALL BUDGET_DDH(UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:),  &
-                                     4,'HON_BU_RTH',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RC) CALL BUDGET_DDH(UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),   &
-                                     7,'HON_BU_RRC',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RI) CALL BUDGET_DDH(UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),   &
-                                     9,'HON_BU_RRI',YDDDH, YDLDDH, YDMDDH)
+    IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TH), 'HON', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RC), 'HON', UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RI), 'HON', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
 
 !*       3.3     compute the spontaneous freezing source: RRHONG
 
+    IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TH), 'SFR', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RR), 'SFR', UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RG), 'SFR', UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+
     ZZW(:) = 0.0
     DO JL = 1, KSIZE
       IF ((PZT(JL)<CST%XTT-35.0) .AND. (PRRT(JL)>ICED%XRTMIN(3)) .AND. (PRRS(JL)>0.)) THEN
@@ -149,12 +151,9 @@ MODULE MODE_RAIN_ICE_OLD_SLOW
       END IF
     END DO
 
-    IF (LBUDGET_TH) CALL BUDGET_DDH(UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:),  &
-                                     4,'SFR_BU_RTH',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RR) CALL BUDGET_DDH(UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),   &
-                                     8,'SFR_BU_RRR',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RG) CALL BUDGET_DDH(UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),   &
-                                    11,'SFR_BU_RRG',YDDDH, YDLDDH, YDMDDH)
+    IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TH), 'SFR', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RR), 'SFR', UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RG), 'SFR', UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
 
 !*       3.4    compute the deposition, aggregation and autoconversion sources
 
@@ -183,6 +182,10 @@ MODULE MODE_RAIN_ICE_OLD_SLOW
     END DO
     ZZW(:) = 0.0
 
+    IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TH), 'DEPS', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RV) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RV), 'DEPS', UNPACK(PZRVS(:),MASK=GMICRO(:,:),FIELD=PRVS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RS), 'DEPS', UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+
     IF(OCND2)THEN
       DO JL = 1, KSIZE
         IF ((PRST(JL)>ICED%XRTMIN(5)) .AND. (PRSS(JL)>0.0)) THEN
@@ -214,15 +217,15 @@ MODULE MODE_RAIN_ICE_OLD_SLOW
       END DO
     ENDIF
 
-    IF (LBUDGET_TH) CALL BUDGET_DDH(UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:),  &
-                                     4,'DEPS_BU_RTH',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RV) CALL BUDGET_DDH(UNPACK(PZRVS(:),MASK=GMICRO(:,:),FIELD=PRVS)*PRHODJ(:,:),  &
-                                     6,'DEPS_BU_RRV',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RS) CALL BUDGET_DDH(UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),   &
-                                    10,'DEPS_BU_RRS',YDDDH, YDLDDH, YDMDDH)
+    IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TH), 'DEPS', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RV) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RV), 'DEPS', UNPACK(PZRVS(:),MASK=GMICRO(:,:),FIELD=PRVS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RS), 'DEPS', UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
 
 !*       3.4.4  compute the aggregation on r_s: RIAGGS
 
+    IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RI), 'AGGS', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RS), 'AGGS', UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+
     ZZW(:) = 0.0
     DO JL = 1, KSIZE
       IF ((PRIT(JL)>ICED%XRTMIN(4)) .AND. (PRST(JL)>ICED%XRTMIN(5)) .AND. (PRIS(JL)>0.0)) THEN
@@ -235,15 +238,15 @@ MODULE MODE_RAIN_ICE_OLD_SLOW
       END IF
     END DO
 
-    IF (LBUDGET_RI) CALL BUDGET_DDH(UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                     9,'AGGS_BU_RRI',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RS) CALL BUDGET_DDH(UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                    10,'AGGS_BU_RRS',YDDDH, YDLDDH, YDMDDH)
+    IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RI), 'AGGS', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RS), 'AGGS', UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
 
 !*       3.4.5  compute the autoconversion of r_i for r_s production: RIAUTS
 
     ZCRIAUTI(:)=MIN(ICEP%XCRIAUTI,10**(ICEP%XACRIAUTI*(PZT(:)-CST%XTT)+ICEP%XBCRIAUTI))
     ZZW(:) = 0.0
+    IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RI), 'AUTS', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RS), 'AUTS', UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
     DO JL = 1, KSIZE
       IF ((PRIT(JL)>ICED%XRTMIN(4)) .AND. (PRIS(JL)>0.0)) THEN
         ZZW(JL) = MIN(PRIS(JL),ICEP%XTIMAUTI * EXP(ICEP%XTEXAUTI*(PZT(JL)-CST%XTT)) &
@@ -292,10 +295,8 @@ MODULE MODE_RAIN_ICE_OLD_SLOW
       END DO
     ENDIF
 
-    IF (LBUDGET_RI) CALL BUDGET_DDH(UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                     9,'AUTS_BU_RRI',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RS) CALL BUDGET_DDH(UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                    10,'AUTS_BU_RRS',YDDDH, YDLDDH, YDMDDH)
+    IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RI), 'AUTS', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RS), 'AUTS', UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
 
 !*       3.4.6  compute the deposition on r_g: RVDEPG
 
@@ -312,6 +313,10 @@ MODULE MODE_RAIN_ICE_OLD_SLOW
       END IF
     END DO
 
+    IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TH), 'DEPG', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RV) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RV), 'DEPG', UNPACK(PZRVS(:),MASK=GMICRO(:,:),FIELD=PRVS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RG), 'DEPG', UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+
     ZZW(:) = 0.0
     DO JL = 1, KSIZE
       IF ((PRGT(JL)>ICED%XRTMIN(6)) .AND. (PRGS(JL)>0.0)) THEN
@@ -340,12 +345,9 @@ MODULE MODE_RAIN_ICE_OLD_SLOW
       END IF
     END DO
 
-    IF (LBUDGET_TH) CALL BUDGET_DDH(UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:),   &
-                                     4,'DEPG_BU_RTH',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RV) CALL BUDGET_DDH(UNPACK(PZRVS(:),MASK=GMICRO(:,:),FIELD=PRVS)*PRHODJ(:,:),   &
-                                     6,'DEPG_BU_RRV',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RG) CALL BUDGET_DDH(UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                    11,'DEPG_BU_RRG',YDDDH, YDLDDH, YDMDDH)
+    IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TH), 'DEPG', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RV) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RV), 'DEPG', UNPACK(PZRVS(:),MASK=GMICRO(:,:),FIELD=PRVS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RG), 'DEPG', UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
 
     IF (LHOOK) CALL DR_HOOK('RAIN_ICE_OLD:RAIN_ICE_SLOW',1,ZHOOK_HANDLE)
 
diff --git a/src/common/micro/mode_rain_ice_old_warm.F90 b/src/common/micro/mode_rain_ice_old_warm.F90
index e4854ba426883a88ef4061b81f768dbbc3c78639..17d6754de51e037044e9ffb3ff9e39253f7e1d42 100644
--- a/src/common/micro/mode_rain_ice_old_warm.F90
+++ b/src/common/micro/mode_rain_ice_old_warm.F90
@@ -9,7 +9,7 @@ MODULE MODE_RAIN_ICE_OLD_WARM
 
   CONTAINS
 
-  SUBROUTINE RAIN_ICE_OLD_WARM(D, CST, PARAMI, ICEP, ICED,                   &
+  SUBROUTINE RAIN_ICE_OLD_WARM(D, CST, PARAMI, ICEP, ICED, BUCONF,           &
                                KSIZE, OCND2, LKOGAN, GMICRO,                 &
                                PRHODJ, PEVAP3D, PTHS, PRVS,                  &
                                ZRVT, ZRCT, ZRRT, ZRCS, ZRRS, ZTHS,           &
@@ -21,7 +21,7 @@ MODULE MODE_RAIN_ICE_OLD_WARM
                                ZHLC_HCF, ZHLC_LCF, ZHLC_HRC, ZHLC_LRC,       &
                                ZAA2W, ZBB3W,                                 &
                                ZZT, ZPRES, ZESW,                             &
-                               YDDDH, YDLDDH, YDMDDH)
+                               TBUDGETS, KBUDGETS)
 
     USE PARKIND1,            ONLY: JPRB
     USE YOMHOOK,             ONLY: LHOOK, DR_HOOK
@@ -33,11 +33,9 @@ MODULE MODE_RAIN_ICE_OLD_WARM
 
     USE MODE_TIWMX,          ONLY: ESATW, AA2W, BB3W
 
-    USE MODE_BUDGET_PHY, ONLY: BUDGET_DDH
-    USE MODD_BUDGET,     ONLY: LBUDGET_TH, LBUDGET_RR, LBUDGET_RC, LBUDGET_RV
-    USE DDH_MIX,         ONLY: TYP_DDH
-    USE YOMLDDH,         ONLY: TLDDH
-    USE YOMMDDH,         ONLY: TMDDH
+    USE MODE_BUDGET_PHY, ONLY: BUDGET_STORE_INIT_PHY, BUDGET_STORE_END_PHY
+    USE MODD_BUDGET,     ONLY: TBUDGETDATA, TBUDGETCONF_t, &
+                               LBU_ENABLE, NBUDGET_TH, NBUDGET_RR, NBUDGET_RC, NBUDGET_RV
 
     IMPLICIT NONE
 
@@ -46,6 +44,7 @@ MODULE MODE_RAIN_ICE_OLD_WARM
     TYPE(PARAM_ICE_t),      INTENT(IN) :: PARAMI
     TYPE(RAIN_ICE_PARAM_T), INTENT(IN) :: ICEP
     TYPE(RAIN_ICE_DESCR_t), INTENT(IN) :: ICED
+    TYPE(TBUDGETCONF_t),      INTENT(IN)    :: BUCONF
 
     INTEGER, INTENT(IN) :: KSIZE
 
@@ -102,9 +101,8 @@ MODULE MODE_RAIN_ICE_OLD_WARM
     REAL, DIMENSION(KSIZE), INTENT(IN) :: ZZKGN_ACON
     REAL, DIMENSION(KSIZE), INTENT(IN) :: ZZKGN_SBGR
 
-    TYPE(TYP_DDH),        INTENT(INOUT)     :: YDDDH
-    TYPE(TLDDH),          INTENT(IN)        :: YDLDDH
-    TYPE(TMDDH),          INTENT(IN)        :: YDMDDH
+    TYPE(TBUDGETDATA), DIMENSION(KBUDGETS), INTENT(INOUT) :: TBUDGETS
+    INTEGER, INTENT(IN) :: KBUDGETS
 
     REAL, DIMENSION(KSIZE) :: ZUSW     ! Undersaturation over water
 
@@ -127,6 +125,9 @@ MODULE MODE_RAIN_ICE_OLD_WARM
 !
     IF (LHOOK) CALL DR_HOOK('RAIN_ICE_OLD:RAIN_ICE_WARM',0,ZHOOK_HANDLE)
 
+    IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RC), 'AUTO', UNPACK(ZRCS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RR), 'AUTO', UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+
     IF (LKOGAN) THEN
       DO JK = 1, KSIZE
         IF (ZRCT(JK) >  1.0E-8) THEN ! Closely following Kogan autoconversion
@@ -149,13 +150,14 @@ MODULE MODE_RAIN_ICE_OLD_WARM
       END DO
     ENDIF
 
-    IF (LBUDGET_RC) CALL BUDGET_DDH(UNPACK(ZRCS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                     7,'AUTO_BU_RRC',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RR) CALL BUDGET_DDH(UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                     8,'AUTO_BU_RRR',YDDDH, YDLDDH, YDMDDH)
+    IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RC), 'AUTO', UNPACK(ZRCS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RR), 'AUTO', UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
 
 !*       4.3    compute the accretion of r_c for r_r production: RCACCR
 
+    IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RC), 'ACCR', UNPACK(ZRCS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RR), 'ACCR', UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+
     IF (PARAMI%CSUBG_RC_RR_ACCR == 'NONE') THEN
       !CLoud water and rain are diluted over the grid box
       DO JK = 1, KSIZE
@@ -214,13 +216,15 @@ MODULE MODE_RAIN_ICE_OLD_WARM
       STOP 'wrong CSUBG_RC_RR_ACCR case'
     ENDIF
 
-    IF (LBUDGET_RC) CALL BUDGET_DDH(UNPACK(ZRCS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                     7,'ACCR_BU_RRC',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RR) CALL BUDGET_DDH(UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                     8,'ACCR_BU_RRR',YDDDH, YDLDDH, YDMDDH)
+    IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RC), 'ACCR', UNPACK(ZRCS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+    IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RR), 'ACCR', UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
 
 !*       4.4    compute the evaporation of r_r: RREVAV
 
+    IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TH), 'REVA', UNPACK(ZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RV) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RV), 'REVA', UNPACK(ZRVS(:),MASK=GMICRO(:,:),FIELD=PRVS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RR), 'REVA', UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
+
     ZZW(:) = 0.0
 
     IF (PARAMI%CSUBG_RR_EVAP=='NONE') THEN
@@ -341,12 +345,9 @@ MODULE MODE_RAIN_ICE_OLD_WARM
       STOP 'wrong CSUBG_RR_EVAP case'
     END IF
 
-    IF (LBUDGET_TH) CALL BUDGET_DDH(UNPACK(ZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:),   &
-                                     4,'REVA_BU_RTH',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RV) CALL BUDGET_DDH(UNPACK(ZRVS(:),MASK=GMICRO(:,:),FIELD=PRVS)*PRHODJ(:,:),   &
-                                     6,'REVA_BU_RRV',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RR) CALL BUDGET_DDH(UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0),    &
-                                     8,'REVA_BU_RRR',YDDDH, YDLDDH, YDMDDH)
+    IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TH), 'REVA', UNPACK(ZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RV) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RV), 'REVA', UNPACK(ZRVS(:),MASK=GMICRO(:,:),FIELD=PRVS)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RR), 'REVA', UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0))
     ZW(:,:) = PEVAP3D(:,:)
     PEVAP3D(:,:) = UNPACK(ZZW(:), MASK=GMICRO(:,:), FIELD=ZW(:,:))
 !
diff --git a/src/common/micro/modi_rain_ice_old.F90 b/src/common/micro/modi_rain_ice_old.F90
index f8ada7f34dd9f169c07de9c17f562825fd2790d4..8e4d4c289011fd02befd2d739019a3dc64581e96 100644
--- a/src/common/micro/modi_rain_ice_old.F90
+++ b/src/common/micro/modi_rain_ice_old.F90
@@ -3,34 +3,34 @@
 !      ####################
 !
 INTERFACE
-      SUBROUTINE RAIN_ICE_OLD (D, CST, PARAMI, ICEP, ICED, OSEDIC, OCND2, LKOGAN, LMODICEDEP, &
-                               HSEDIM, HSUBG_AUCV_RC, OWARM, &
-                               KKA, KKU, KKL,                                        &
-                               KSPLITR, PTSTEP, KRR, KSIZE, GMICRO,                    &
-                               PDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR,&
-                               PICLDFR, PSSIO, PSSIU, PIFR,                 &
-                               PTHT, PRVT, PRCT, PRRT, PRIT, PRST, &
-                               PRGT, PTHS, PRVS, PRCS, PRRS, PRIS, PRSS, PRGS, &
-                               PINPRC, PINPRR, PEVAP3D,                    &
-                               PINPRS, PINPRG, PSIGS, PSEA, PTOWN,                   &
-                               YDDDH, YDLDDH, YDMDDH, &
-                               PICENU, PKGN_ACON, PKGN_SBGR, &
+      SUBROUTINE RAIN_ICE_OLD (D, CST, PARAMI, ICEP, ICED, BUCONF,                    &
+                               OSEDIC, OCND2, LKOGAN, LMODICEDEP,                     &
+                               HSEDIM, HSUBG_AUCV_RC, OWARM,                          &
+                               KKA, KKU, KKL,                                         &
+                               KSPLITR, PTSTEP, KRR, KSIZE, GMICRO,                   &
+                               PDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR, &
+                               PICLDFR, PSSIO, PSSIU, PIFR,                           &
+                               PTHT, PRVT, PRCT, PRRT, PRIT, PRST,                    &
+                               PRGT, PTHS, PRVS, PRCS, PRRS, PRIS, PRSS, PRGS,        &
+                               PINPRC, PINPRR, PEVAP3D,                               &
+                               PINPRS, PINPRG, PSIGS, PSEA, PTOWN,                    &
+                               TBUDGETS, KBUDGETS,                                    &
+                               PICENU, PKGN_ACON, PKGN_SBGR,                          &
                                PRHT, PRHS, PINPRH, PFPR)
 !
-USE DDH_MIX, ONLY : TYP_DDH
-USE YOMLDDH, ONLY : TLDDH
-USE YOMMDDH, ONLY : TMDDH
+USE MODD_BUDGET,         ONLY: TBUDGETDATA, TBUDGETCONF_t
 USE MODD_DIMPHYEX, ONLY: DIMPHYEX_T
 USE MODD_CST, ONLY: CST_T
 USE MODD_PARAM_ICE,      ONLY: PARAM_ICE_t
 USE MODD_RAIN_ICE_PARAM, ONLY: RAIN_ICE_PARAM_T
 USE MODD_RAIN_ICE_DESCR, ONLY: RAIN_ICE_DESCR_T
 !
-TYPE(DIMPHYEX_T), INTENT(IN)       :: D
-TYPE(CST_T), INTENT(IN)            :: CST 
+TYPE(DIMPHYEX_T),       INTENT(IN) :: D
+TYPE(CST_T),            INTENT(IN) :: CST 
 TYPE(PARAM_ICE_t),      INTENT(IN) :: PARAMI
-TYPE(RAIN_ICE_PARAM_T), INTENT(IN) :: ICEP
-TYPE(RAIN_ICE_DESCR_T), INTENT(IN) :: ICED
+TYPE(RAIN_ICE_PARAM_t), INTENT(IN) :: ICEP
+TYPE(RAIN_ICE_DESCR_t), INTENT(IN) :: ICED
+TYPE(TBUDGETCONF_t),      INTENT(IN)    :: BUCONF
 
 LOGICAL,                  INTENT(IN)    :: OSEDIC ! Switch for droplet sedim.
 LOGICAL,                  INTENT(IN)    :: OCND2  ! Logical switch to separate liquid and ice
@@ -42,7 +42,6 @@ CHARACTER(LEN=4),         INTENT(IN)    :: HSUBG_AUCV_RC ! Switch for rc->rr Sub
 LOGICAL,                  INTENT(IN)    :: OWARM   ! .TRUE. allows raindrops to
                                                    !   form by warm processes
                                                    !      (Kessler scheme)
-!
 INTEGER,                  INTENT(IN)    :: KKA   !near ground array index
 INTEGER,                  INTENT(IN)    :: KKU   !uppest atmosphere array index
 INTEGER,                  INTENT(IN)    :: KKL   !vert. levels type 1=MNH -1=ARO
@@ -52,58 +51,57 @@ REAL,                     INTENT(IN)    :: PTSTEP  ! Double Time step
                                                    ! (single if cold start)
 INTEGER,                  INTENT(IN)    :: KRR     ! Number of moist variable
 !
-LOGICAL, DIMENSION(D%NIT,D%NKT),   INTENT(IN) :: GMICRO
+LOGICAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: GMICRO    ! Layer thickness (m)
 
 INTEGER, INTENT(IN) :: KSIZE
-
-REAL, DIMENSION(D%NIT,D%NKT),   INTENT(IN)    :: PDZZ    ! Layer thickness (m)
-REAL, DIMENSION(D%NIT,D%NKT),   INTENT(IN)    :: PRHODJ  ! Dry density * Jacobian
-REAL, DIMENSION(D%NIT,D%NKT),   INTENT(IN)    :: PRHODREF! Reference density
-REAL, DIMENSION(D%NIT,D%NKT),   INTENT(IN)    :: PEXNREF ! Reference Exner function
-REAL, DIMENSION(D%NIT,D%NKT),   INTENT(IN)    :: PPABST  ! absolute pressure at t
 !
-REAL, DIMENSION(D%NIT,D%NKT),   INTENT(INOUT) :: PCIT    ! Pristine ice n.c. at t
-REAL, DIMENSION(D%NIT,D%NKT),   INTENT(IN)    :: PCLDFR  ! Cloud fraction
+REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN)    :: PDZZ    ! Layer thickness (m)
+REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN)    :: PRHODJ  ! Dry density * Jacobian
+REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN)    :: PRHODREF! Reference density
+REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN)    :: PEXNREF ! Reference Exner function
+REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN)    :: PPABST  ! absolute pressure at t
+!
+REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PCIT    ! Pristine ice n.c. at t
+REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN)    :: PCLDFR  ! Cloud fraction
 !
-REAL, DIMENSION(D%NIT,D%NKT),   INTENT(IN)    :: PTHT    ! Theta at time t
-REAL, DIMENSION(D%NIT,D%NKT),   INTENT(IN)    :: PRVT    ! Water vapor m.r. at t
-REAL, DIMENSION(D%NIT,D%NKT),   INTENT(IN)    :: PRCT    ! Cloud water m.r. at t
-REAL, DIMENSION(D%NIT,D%NKT),   INTENT(IN)    :: PRRT    ! Rain water m.r. at t
-REAL, DIMENSION(D%NIT,D%NKT),   INTENT(IN)    :: PRIT    ! Pristine ice m.r. at t
-REAL, DIMENSION(D%NIT,D%NKT),   INTENT(IN)    :: PRST    ! Snow/aggregate m.r. at t
-REAL, DIMENSION(D%NIT,D%NKT),   INTENT(IN)    :: PRGT    ! Graupel/hail m.r. at t
-REAL, DIMENSION(D%NIT,D%NKT),   INTENT(IN)    :: PSIGS   ! Sigma_s at t
+REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN)    :: PTHT    ! Theta at time t
+REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN)    :: PRVT    ! Water vapor m.r. at t
+REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN)    :: PRCT    ! Cloud water m.r. at t
+REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN)    :: PRRT    ! Rain water m.r. at t
+REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN)    :: PRIT    ! Pristine ice m.r. at t
+REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN)    :: PRST    ! Snow/aggregate m.r. at t
+REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN)    :: PRGT    ! Graupel/hail m.r. at t
+REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN)    :: PSIGS   ! Sigma_s at t
 ! input from aro_adjust / condensation with OCND2, dummy if OCND2 = F
-REAL, DIMENSION(D%NIT,D%NKT),   INTENT(IN)    :: PICLDFR ! ice cloud fraction
-REAL, DIMENSION(D%NIT,D%NKT),   INTENT(IN)    :: PSSIO   ! Super-saturation with respect to ice in the  
-                                                   ! supersaturated fraction
-REAL, DIMENSION(D%NIT,D%NKT),   INTENT(IN)    :: PSSIU   ! Sub-saturation with respect to ice in the  
-                                                   ! subsaturated fraction 
-REAL, DIMENSION(D%NIT,D%NKT),   INTENT(INOUT) :: PIFR    ! Ratio cloud ice moist part to dry part 
+REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN)    :: PICLDFR ! ice cloud fraction
+REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN)    :: PSSIO   ! Super-saturation with respect to ice in the
+                                                 ! supersaturated fraction
+REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN)    :: PSSIU   ! Sub-saturation with respect to ice in the
+                                                 ! subsaturated fraction
+REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PIFR    ! Ratio cloud ice moist part to dry part
 ! input from aro_adjust / condensation with OCND2 END.
 !
-REAL, DIMENSION(D%NIT,D%NKT),   INTENT(INOUT) :: PTHS    ! Theta source
-REAL, DIMENSION(D%NIT,D%NKT),   INTENT(INOUT) :: PRVS    ! Water vapor m.r. source
-REAL, DIMENSION(D%NIT,D%NKT),   INTENT(INOUT) :: PRCS    ! Cloud water m.r. source
-REAL, DIMENSION(D%NIT,D%NKT),   INTENT(INOUT) :: PRRS    ! Rain water m.r. source
-REAL, DIMENSION(D%NIT,D%NKT),   INTENT(INOUT) :: PRIS    ! Pristine ice m.r. source
-REAL, DIMENSION(D%NIT,D%NKT),   INTENT(INOUT) :: PRSS    ! Snow/aggregate m.r. source
-REAL, DIMENSION(D%NIT,D%NKT),   INTENT(INOUT) :: PRGS    ! Graupel m.r. source
+REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PTHS    ! Theta source
+REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PRVS    ! Water vapor m.r. source
+REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PRCS    ! Cloud water m.r. source
+REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PRRS    ! Rain water m.r. source
+REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PRIS    ! Pristine ice m.r. source
+REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PRSS    ! Snow/aggregate m.r. source
+REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PRGS    ! Graupel m.r. source
 !
-REAL, DIMENSION(D%NIT), INTENT(INOUT)         :: PINPRC! Cloud instant precip
-REAL, DIMENSION(D%NIT), INTENT(INOUT)         :: PINPRR! Rain instant precip
-REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT)   :: PEVAP3D! Rain evap profile
-REAL, DIMENSION(D%NIT), INTENT(INOUT)         :: PINPRS! Snow instant precip
-REAL, DIMENSION(D%NIT), INTENT(INOUT)         :: PINPRG! Graupel instant precip
-REAL, DIMENSION(D%NIT), INTENT(IN)            :: PSEA ! Sea Mask
-REAL, DIMENSION(D%NIT), INTENT(IN)            :: PTOWN! Fraction that is town
-TYPE(TYP_DDH),        INTENT(INOUT)     :: YDDDH
-TYPE(TLDDH),          INTENT(IN)        :: YDLDDH
-TYPE(TMDDH),          INTENT(IN)        :: YDMDDH
+REAL, DIMENSION(D%NIT),       INTENT(OUT) :: PINPRC! Cloud instant precip
+REAL, DIMENSION(D%NIT),       INTENT(OUT) :: PINPRR! Rain instant precip
+REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT) :: PEVAP3D! Rain evap profile
+REAL, DIMENSION(D%NIT),       INTENT(OUT) :: PINPRS! Snow instant precip
+REAL, DIMENSION(D%NIT),       INTENT(OUT) :: PINPRG! Graupel instant precip
+REAL, DIMENSION(D%NIT),       INTENT(IN)  :: PSEA ! Sea Mask
+REAL, DIMENSION(D%NIT),       INTENT(IN)  :: PTOWN! Fraction that is town
+TYPE(TBUDGETDATA), DIMENSION(KBUDGETS), INTENT(INOUT) :: TBUDGETS
+INTEGER, INTENT(IN) :: KBUDGETS
 REAL, DIMENSION(D%NIT), INTENT(IN)            :: PICENU, PKGN_ACON, PKGN_SBGR
 REAL, DIMENSION(D%NIT,D%NKT),   OPTIONAL, INTENT(IN)    :: PRHT    ! Hail m.r. at t
 REAL, DIMENSION(D%NIT,D%NKT),   OPTIONAL, INTENT(INOUT) :: PRHS    ! Hail m.r. source
-REAL, DIMENSION(D%NIT),         OPTIONAL, INTENT(INOUT) :: PINPRH  ! Hail instant precip
+REAL, DIMENSION(D%NIT),         OPTIONAL, INTENT(OUT)   :: PINPRH  ! Hail instant precip
 REAL, DIMENSION(D%NIT,D%NKT,KRR), OPTIONAL, INTENT(OUT) :: PFPR    ! upper-air precipitation fluxes
 !
 END SUBROUTINE RAIN_ICE_OLD
diff --git a/src/common/micro/rain_ice_old.F90 b/src/common/micro/rain_ice_old.F90
index ec3957e371755420da73edee415b4e678f976ab6..1d792dbd9b5a77252a12939baba73be5a2b51440 100644
--- a/src/common/micro/rain_ice_old.F90
+++ b/src/common/micro/rain_ice_old.F90
@@ -1,8 +1,8 @@
 !     ######spl
-      SUBROUTINE RAIN_ICE_OLD (D, CST, PARAMI, ICEP, ICED,                            &
+      SUBROUTINE RAIN_ICE_OLD (D, CST, PARAMI, ICEP, ICED, BUCONF,                    &
                                OSEDIC, OCND2, LKOGAN, LMODICEDEP,                     &
                                HSEDIM, HSUBG_AUCV_RC, OWARM,                          &
-                               KKA,KKU,KKL,                                           &
+                               KKA, KKU, KKL,                                         &
                                KSPLITR, PTSTEP, KRR, KSIZE, GMICRO,                   &
                                PDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR, &
                                PICLDFR, PSSIO, PSSIU, PIFR,                           &
@@ -10,7 +10,7 @@
                                PRGT, PTHS, PRVS, PRCS, PRRS, PRIS, PRSS, PRGS,        &
                                PINPRC, PINPRR, PEVAP3D,                               &
                                PINPRS, PINPRG, PSIGS, PSEA, PTOWN,                    &
-                               YDDDH, YDLDDH, YDMDDH,                                 &
+                               TBUDGETS, KBUDGETS,                                    &
                                PICENU, PKGN_ACON, PKGN_SBGR,                          &
                                PRHT, PRHS, PINPRH, PFPR)
 
@@ -173,17 +173,15 @@
 !              ------------
 !
 USE MODD_PARAMETERS, ONLY: JPVEXT
-USE MODD_BUDGET,     ONLY: LBU_ENABLE, LBUDGET_TH, LBUDGET_RG, LBUDGET_RR, LBUDGET_RC, &
-                                       LBUDGET_RI, LBUDGET_RS, LBUDGET_RH, LBUDGET_RV
+USE MODD_BUDGET,     ONLY: TBUDGETDATA, TBUDGETCONF_t, NBUDGET_TH, NBUDGET_RV, NBUDGET_RC, &
+                           NBUDGET_RI, NBUDGET_RR, NBUDGET_RS, NBUDGET_RG, NBUDGET_RH, &
+                           LBU_ENABLE
 USE MODD_LES,        ONLY: TLES
-USE MODE_BUDGET_PHY, ONLY: BUDGET_DDH
+USE MODE_BUDGET_PHY, ONLY: BUDGET_STORE_ADD_PHY, BUDGET_STORE_INIT_PHY, BUDGET_STORE_END_PHY
 USE MODI_GAMMA,      ONLY: GAMMA
 USE MODE_TIWMX,      ONLY: ESATI, ESATW, AA2, BB3, AA2W, BB3W
 USE MODE_ICECLOUD,   ONLY: ICECLOUD
 USE MODE_TIWMX_TAB,  ONLY: TIWMX_TAB
-USE DDH_MIX,         ONLY: TYP_DDH
-USE YOMLDDH,         ONLY: TLDDH
-USE YOMMDDH,         ONLY: TMDDH
 !
 USE MODE_RAIN_ICE_OLD_NUCLEATION,          ONLY: RAIN_ICE_OLD_NUCLEATION
 USE MODE_RAIN_ICE_OLD_SEDIMENTATION_STAT,  ONLY: RAIN_ICE_OLD_SEDIMENTATION_STAT
@@ -204,8 +202,9 @@ IMPLICIT NONE
 TYPE(DIMPHYEX_T),       INTENT(IN) :: D
 TYPE(CST_T),            INTENT(IN) :: CST 
 TYPE(PARAM_ICE_t),      INTENT(IN) :: PARAMI
-TYPE(RAIN_ICE_PARAM_T), INTENT(IN) :: ICEP
+TYPE(RAIN_ICE_PARAM_t), INTENT(IN) :: ICEP
 TYPE(RAIN_ICE_DESCR_t), INTENT(IN) :: ICED
+TYPE(TBUDGETCONF_t),      INTENT(IN)    :: BUCONF
 
 LOGICAL,                  INTENT(IN)    :: OSEDIC ! Switch for droplet sedim.
 LOGICAL,                  INTENT(IN)    :: OCND2  ! Logical switch to separate liquid and ice
@@ -271,9 +270,8 @@ REAL, DIMENSION(D%NIT),       INTENT(OUT) :: PINPRS! Snow instant precip
 REAL, DIMENSION(D%NIT),       INTENT(OUT) :: PINPRG! Graupel instant precip
 REAL, DIMENSION(D%NIT),       INTENT(IN)  :: PSEA ! Sea Mask
 REAL, DIMENSION(D%NIT),       INTENT(IN)  :: PTOWN! Fraction that is town
-TYPE(TYP_DDH),        INTENT(INOUT)     :: YDDDH
-TYPE(TLDDH),          INTENT(IN)        :: YDLDDH
-TYPE(TMDDH),          INTENT(IN)        :: YDMDDH
+TYPE(TBUDGETDATA), DIMENSION(KBUDGETS), INTENT(INOUT) :: TBUDGETS
+INTEGER, INTENT(IN) :: KBUDGETS
 REAL, DIMENSION(D%NIT), INTENT(IN)            :: PICENU, PKGN_ACON, PKGN_SBGR
 REAL, DIMENSION(D%NIT,D%NKT),   OPTIONAL, INTENT(IN)    :: PRHT    ! Hail m.r. at t
 REAL, DIMENSION(D%NIT,D%NKT),   OPTIONAL, INTENT(INOUT) :: PRHS    ! Hail m.r. source
@@ -409,6 +407,7 @@ REAL :: ZCOEFFRCM
 LOGICAL :: LCHECKNOISE ! Noise check on/off
 LOGICAL :: LTIW   ! Use TIW for graupel melting ( set by XFRMIN(18) ~ 1)
 !
+REAL, DIMENSION(D%NIT,D%NKT) :: ZBU0
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !
 !-------------------------------------------------------------------------------
@@ -499,6 +498,11 @@ ENDIF
 
 ZT(:,:) = PTHT(:,:) * ( PPABST(:,:) / CST%XP00 ) ** (CST%XRD/CST%XCPD)
 
+IF(BUCONF%LBU_ENABLE) THEN
+  IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TH), 'HENU', PTHS(:,:)*PRHODJ(:,:))
+  IF (BUCONF%LBUDGET_RV) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RV), 'HENU', PRVS(:,:)*PRHODJ(:,:))
+  IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RI), 'HENU', PRIS(:,:)*PRHODJ(:,:))
+ENDIF
 CALL RAIN_ICE_OLD_NUCLEATION(D, CST, ICEP, COUNT(ZT(D%NIB:D%NIE,D%NKTB:D%NKTE)<CST%XTT), &
                              OCND2, LMODICEDEP, KRR, PTSTEP, &
                              PTHT, PPABST, PEXNREF, PICLDFR, PRHODJ, PRHODREF, &
@@ -506,10 +510,11 @@ CALL RAIN_ICE_OLD_NUCLEATION(D, CST, ICEP, COUNT(ZT(D%NIB:D%NIE,D%NKTB:D%NKTE)<C
                              PTHS, PRVS, PRIS, PCIT, &
                              PICENU, ZT, ZZZZ, &
                              PRHT)
-
-IF (LBUDGET_TH) CALL BUDGET_DDH (PTHS(:,:)*PRHODJ(:,:),4,'HENU_BU_RTH',YDDDH, YDLDDH, YDMDDH)
-IF (LBUDGET_RV) CALL BUDGET_DDH (PRVS(:,:)*PRHODJ(:,:),6,'HENU_BU_RRV',YDDDH, YDLDDH, YDMDDH)
-IF (LBUDGET_RI) CALL BUDGET_DDH (PRIS(:,:)*PRHODJ(:,:),9,'HENU_BU_RRI',YDDDH, YDLDDH, YDMDDH)
+IF(BUCONF%LBU_ENABLE) THEN
+  IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TH), 'HENU', PTHS(:,:)*PRHODJ(:,:))
+  IF (BUCONF%LBUDGET_RV) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RV), 'HENU', PRVS(:,:)*PRHODJ(:,:))
+  IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RI), 'HENU', PRIS(:,:)*PRHODJ(:,:))
+ENDIF
 
 IMICRO = 0
 DO JK = 1, D%NKT
@@ -843,7 +848,7 @@ IF ( KSIZE >= 0 ) THEN
     ZRF(JL)=ZRAINFR(I1(JL),I2(JL))
   END DO
 !
-  CALL RAIN_ICE_OLD_SLOW(D, CST, ICED, ICEP, &
+  CALL RAIN_ICE_OLD_SLOW(D, CST, ICED, ICEP, BUCONF, &
                          KSIZE, OCND2, LMODICEDEP, &
                          PTSTEP, ZREDSN, &
                          GMICRO, PRHODJ, PTHS, PRVS, &
@@ -855,7 +860,7 @@ IF ( KSIZE >= 0 ) THEN
                          ZLBDAG, ZKA, ZDV, &
                          ZAI, ZCJ, ZAA2, ZBB3, &
                          ZDICRIT, ZREDGR, ZKVO, &
-                         YDDDH, YDLDDH, YDMDDH)
+                         TBUDGETS, KBUDGETS)
 !
 !-------------------------------------------------------------------------------
 !
@@ -879,7 +884,7 @@ IF ( KSIZE >= 0 ) THEN
   IF( OWARM ) THEN    !  Check if the formation of the raindrops by the slow
                       !  warm processes is allowed
     PEVAP3D(:,:)= 0.
-    CALL RAIN_ICE_OLD_WARM(D, CST, PARAMI, ICEP, ICED, &
+    CALL RAIN_ICE_OLD_WARM(D, CST, PARAMI, ICEP, ICED, BUCONF, &
                            KSIZE, OCND2, LKOGAN, GMICRO, &
                            PRHODJ, PEVAP3D, PTHS, PRVS, &
                            ZRVT, ZRCT, ZRRT, ZRCS, ZRRS, ZTHS, &
@@ -891,7 +896,7 @@ IF ( KSIZE >= 0 ) THEN
                            ZHLC_HCF, ZHLC_LCF, ZHLC_HRC, ZHLC_LRC, &
                            ZAA2W, ZBB3W, &
                            ZZT, ZPRES, ZESW, &
-                           YDDDH, YDLDDH, YDMDDH)
+                           TBUDGETS, KBUDGETS)
   END IF
 !
 !-------------------------------------------------------------------------------
@@ -900,7 +905,7 @@ IF ( KSIZE >= 0 ) THEN
 !*       4.     COMPUTES THE FAST COLD PROCESS SOURCES FOR r_s
 !               ----------------------------------------------
 !
-  CALL RAIN_ICE_OLD_FAST_RS(D, CST, ICEP, ICED, &
+  CALL RAIN_ICE_OLD_FAST_RS(D, CST, ICEP, ICED, BUCONF, &
                             PTSTEP, KSIZE, KRR, GMICRO, &
                             PRHODJ, PTHS, &
                             ZRVT, ZRCT, ZRRT, ZRST, &
@@ -908,7 +913,7 @@ IF ( KSIZE >= 0 ) THEN
                             ZRHODREF, ZRHODJ, ZLSFACT, ZLVFACT, &
                             ZCJ, ZKA, ZDV, &
                             ZLBDAR, ZLBDAS, ZCOLF, ZPRES, ZZT, &
-                            YDDDH, YDLDDH, YDMDDH)
+                            TBUDGETS, KBUDGETS)
 !
 !-------------------------------------------------------------------------------
 !
@@ -917,7 +922,7 @@ IF ( KSIZE >= 0 ) THEN
 !               ----------------------------------------------
 !
 
-  CALL RAIN_ICE_OLD_FAST_RG(D, CST, ICEP, ICED, &
+  CALL RAIN_ICE_OLD_FAST_RG(D, CST, ICEP, ICED, BUCONF, &
                             PTSTEP, KSIZE, KRR, &
                             OCND2, LTIW, GMICRO, &
                             PRHODJ, PTHS, &
@@ -927,7 +932,7 @@ IF ( KSIZE >= 0 ) THEN
                             ZCJ, ZKA, ZDV, &
                             ZLBDAR, ZLBDAG, ZLBDAS, &
                             ZTIW, ZZT, ZPRES, &
-                            YDDDH, YDLDDH, YDMDDH)
+                            TBUDGETS, KBUDGETS)
 !
 !-------------------------------------------------------------------------------
 !
@@ -936,7 +941,7 @@ IF ( KSIZE >= 0 ) THEN
 !               ----------------------------------------------
 !
  IF ( KRR == 7 ) THEN
-  CALL RAIN_ICE_OLD_FAST_RH(D, CST, ICEP, ICED, &
+  CALL RAIN_ICE_OLD_FAST_RH(D, CST, ICEP, ICED, BUCONF, &
                             KSIZE, KRR, &
                             GMICRO, &
                             PTHS, PRHODJ, &
@@ -946,7 +951,7 @@ IF ( KSIZE >= 0 ) THEN
                             ZLBDAS, ZLBDAG, ZLBDAH, &
                             ZCJ, ZKA, ZDV, &
                             ZZT, ZPRES, &
-                            YDDDH, YDLDDH, YDMDDH)
+                            TBUDGETS, KBUDGETS)
  END IF
 !
 !-------------------------------------------------------------------------------
@@ -956,7 +961,7 @@ IF ( KSIZE >= 0 ) THEN
 !               -------------------------------------------------------------
 !
 
-  CALL RAIN_ICE_OLD_FAST_RI(D, CST, ICEP, ICED, &
+  CALL RAIN_ICE_OLD_FAST_RI(D, CST, ICEP, ICED, BUCONF, &
                             PTSTEP, KSIZE, &
                             OCND2, LMODICEDEP, GMICRO, &
                             PRHODJ, PTHS, &
@@ -969,7 +974,7 @@ IF ( KSIZE >= 0 ) THEN
                             ZZT, ZPRES, ZSSI, &
                             ZSIFRC, ZESI, &
                             ZCITRED, ZCITRED23, ZDICRIT, &
-                            YDDDH, YDLDDH, YDMDDH)
+                            TBUDGETS, KBUDGETS)
 
   IF (OCND2.AND.LCHECKNOISE) THEN
 !*       8     This check is mainly for noise reduction:
@@ -1054,91 +1059,93 @@ IF ( KSIZE >= 0 ) THEN
 !
 ! Advance the budget calls
 !
+ IF (BUCONF%LBU_ENABLE) THEN
 ! Reordered for compability with flexible structures like in AROME
-
+ ZBU0(:,:)=0.
  ! rain_ice_slow
- IF (LBUDGET_TH) CALL BUDGET_DDH (PTHS(:,:)*PRHODJ(:,:),4,'HON_BU_RTH',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RC) CALL BUDGET_DDH (PRCS(:,:)*PRHODJ(:,:),7,'HON_BU_RRC',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RI) CALL BUDGET_DDH (PRIS(:,:)*PRHODJ(:,:),9,'HON_BU_RRI',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_TH) CALL BUDGET_DDH (PTHS(:,:)*PRHODJ(:,:),4,'SFR_BU_RTH',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RR) CALL BUDGET_DDH (PRRS(:,:)*PRHODJ(:,:),8,'SFR_BU_RRR',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RG) CALL BUDGET_DDH (PRGS(:,:)*PRHODJ(:,:),11,'SFR_BU_RRG',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_TH) CALL BUDGET_DDH (PTHS(:,:)*PRHODJ(:,:),4,'DEPS_BU_RTH',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RV) CALL BUDGET_DDH (PRVS(:,:)*PRHODJ(:,:),6,'DEPS_BU_RRV',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RS) CALL BUDGET_DDH (PRSS(:,:)*PRHODJ(:,:),10,'DEPS_BU_RRS',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RI) CALL BUDGET_DDH (PRIS(:,:)*PRHODJ(:,:),9,'AGGS_BU_RRI',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RS) CALL BUDGET_DDH (PRSS(:,:)*PRHODJ(:,:),10,'AGGS_BU_RRS',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RI) CALL BUDGET_DDH (PRIS(:,:)*PRHODJ(:,:),9,'AUTS_BU_RRI',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RS) CALL BUDGET_DDH (PRSS(:,:)*PRHODJ(:,:),10,'AUTS_BU_RRS',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_TH) CALL BUDGET_DDH (PTHS(:,:)*PRHODJ(:,:),4,'DEPG_BU_RTH',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RV) CALL BUDGET_DDH (PRVS(:,:)*PRHODJ(:,:),6,'DEPG_BU_RRV',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RG) CALL BUDGET_DDH (PRGS(:,:)*PRHODJ(:,:),11,'DEPG_BU_RRG',YDDDH, YDLDDH, YDMDDH)
+ IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TH), 'HON', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RC), 'HON', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RI), 'HON', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TH), 'SFR', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RR), 'SFR', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RG), 'SFR', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TH), 'DEPS', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RV) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RV), 'DEPS', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RS), 'DEPS', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RI), 'AGGS', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RS), 'AGGS', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RI), 'AUTS', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RS), 'AUTS', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TH), 'DEPG', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RV) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RV), 'DEPG', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RG), 'DEPG', ZBU0(:,:))
 
  IF (OWARM) THEN ! rain_ice_warm
-   IF (LBUDGET_RC) CALL BUDGET_DDH (PRCS(:,:)*PRHODJ(:,:),7,'AUTO_BU_RRC',YDDDH, YDLDDH, YDMDDH)
-   IF (LBUDGET_RR) CALL BUDGET_DDH (PRRS(:,:)*PRHODJ(:,:),8,'AUTO_BU_RRR',YDDDH, YDLDDH, YDMDDH)
-   IF (LBUDGET_RC) CALL BUDGET_DDH (PRCS(:,:)*PRHODJ(:,:),7,'ACCR_BU_RRC',YDDDH, YDLDDH, YDMDDH)
-   IF (LBUDGET_RR) CALL BUDGET_DDH (PRRS(:,:)*PRHODJ(:,:),8,'ACCR_BU_RRR',YDDDH, YDLDDH, YDMDDH)
-   IF (LBUDGET_TH) CALL BUDGET_DDH (PTHS(:,:)*PRHODJ(:,:),4,'REVA_BU_RTH',YDDDH, YDLDDH, YDMDDH)
-   IF (LBUDGET_RV) CALL BUDGET_DDH (PRVS(:,:)*PRHODJ(:,:),6,'REVA_BU_RRV',YDDDH, YDLDDH, YDMDDH)
-   IF (LBUDGET_RR) CALL BUDGET_DDH (PRRS(:,:)*PRHODJ(:,:),8,'REVA_BU_RRR',YDDDH, YDLDDH, YDMDDH)
+   IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RC), 'AUTO', ZBU0(:,:))
+   IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RR), 'AUTO', ZBU0(:,:))
+   IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RC), 'ACCR', ZBU0(:,:))
+   IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RR), 'ACCR', ZBU0(:,:))
+   IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TH), 'REVA', ZBU0(:,:))
+   IF (BUCONF%LBUDGET_RV) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RV), 'REVA', ZBU0(:,:))
+   IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RR), 'REVA', ZBU0(:,:))
  ENDIF
 
  !rain_ice_fast_rs
- IF (LBUDGET_TH) CALL BUDGET_DDH (PTHS(:,:)*PRHODJ(:,:),4,'RIM_BU_RTH',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RC) CALL BUDGET_DDH (PRCS(:,:)*PRHODJ(:,:),7,'RIM_BU_RRC',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RS) CALL BUDGET_DDH (PRSS(:,:)*PRHODJ(:,:),10,'RIM_BU_RRS',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RG) CALL BUDGET_DDH (PRGS(:,:)*PRHODJ(:,:),11,'RIM_BU_RRG',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_TH) CALL BUDGET_DDH (PTHS(:,:)*PRHODJ(:,:),4,'ACC_BU_RTH',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RR) CALL BUDGET_DDH (PRRS(:,:)*PRHODJ(:,:),8,'ACC_BU_RRR',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RS) CALL BUDGET_DDH (PRSS(:,:)*PRHODJ(:,:),10,'ACC_BU_RRS',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RG) CALL BUDGET_DDH (PRGS(:,:)*PRHODJ(:,:),11,'ACC_BU_RRG',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RS) CALL BUDGET_DDH (PRSS(:,:)*PRHODJ(:,:),10,'CMEL_BU_RRS',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RG) CALL BUDGET_DDH (PRGS(:,:)*PRHODJ(:,:),11,'CMEL_BU_RRG',YDDDH, YDLDDH, YDMDDH)
+ IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TH), 'RIM', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RC), 'RIM', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RS), 'RIM', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RG), 'RIM', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TH), 'ACC', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RR), 'ACC', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RS), 'ACC', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RG), 'ACC', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RS), 'CMEL', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RG), 'CMEL', ZBU0(:,:))
 
  !rain_ice_fast_rg
- IF (LBUDGET_TH) CALL BUDGET_DDH (PTHS(:,:)*PRHODJ(:,:),4,'CFRZ_BU_RTH',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RR) CALL BUDGET_DDH (PRRS(:,:)*PRHODJ(:,:),8,'CFRZ_BU_RRR',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RI) CALL BUDGET_DDH (PRIS(:,:)*PRHODJ(:,:),9,'CFRZ_BU_RRI',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RG) CALL BUDGET_DDH (PRGS(:,:)*PRHODJ(:,:),11,'CFRZ_BU_RRG',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_TH) CALL BUDGET_DDH (PTHS(:,:)*PRHODJ(:,:),4,'WETG_BU_RTH',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RC) CALL BUDGET_DDH (PRCS(:,:)*PRHODJ(:,:),7,'WETG_BU_RRC',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RR) CALL BUDGET_DDH (PRRS(:,:)*PRHODJ(:,:),8,'WETG_BU_RRR',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RI) CALL BUDGET_DDH (PRIS(:,:)*PRHODJ(:,:),9,'WETG_BU_RRI',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RS) CALL BUDGET_DDH (PRSS(:,:)*PRHODJ(:,:),10,'WETG_BU_RRS',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RG) CALL BUDGET_DDH (PRGS(:,:)*PRHODJ(:,:),11,'WETG_BU_RRG',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RH) CALL BUDGET_DDH (PRHS(:,:)*PRHODJ(:,:),12,'WETG_BU_RRH',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_TH) CALL BUDGET_DDH (PTHS(:,:)*PRHODJ(:,:),4,'DRYG_BU_RTH',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RC) CALL BUDGET_DDH (PRCS(:,:)*PRHODJ(:,:),7,'DRYG_BU_RRC',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RR) CALL BUDGET_DDH (PRRS(:,:)*PRHODJ(:,:),8,'DRYG_BU_RRR',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RI) CALL BUDGET_DDH (PRIS(:,:)*PRHODJ(:,:),9,'DRYG_BU_RRI',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RS) CALL BUDGET_DDH (PRSS(:,:)*PRHODJ(:,:),10,'DRYG_BU_RRS',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RG) CALL BUDGET_DDH (PRGS(:,:)*PRHODJ(:,:),11,'DRYG_BU_RRG',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_TH) CALL BUDGET_DDH (PTHS(:,:)*PRHODJ(:,:),4,'GMLT_BU_RTH',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RR) CALL BUDGET_DDH (PRRS(:,:)*PRHODJ(:,:),8,'GMLT_BU_RRR',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RG) CALL BUDGET_DDH (PRGS(:,:)*PRHODJ(:,:),11,'GMLT_BU_RRG',YDDDH, YDLDDH, YDMDDH)
+ IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TH), 'CFRZ', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RR), 'CFRZ', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RI), 'CFRZ', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RG), 'CFRZ', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TH), 'WETG', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RC), 'WETG', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RR), 'WETG', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RI), 'WETG', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RS), 'WETG', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RG), 'WETG', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RH), 'WETG', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TH), 'DRYG', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RC), 'DRYG', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RR), 'DRYG', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RI), 'DRYG', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RS), 'DRYG', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RG), 'DRYG', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TH), 'GMLT', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RR), 'GMLT', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RG), 'GMLT', ZBU0(:,:))
 
  IF(KRR==7) THEN ! rain_ice_fast_rh
-   IF (LBUDGET_TH) CALL BUDGET_DDH (PTHS(:,:)*PRHODJ(:,:),4,'WETH_BU_RTH',YDDDH, YDLDDH, YDMDDH)
-   IF (LBUDGET_RC) CALL BUDGET_DDH (PRCS(:,:)*PRHODJ(:,:),7,'WETH_BU_RRC',YDDDH, YDLDDH, YDMDDH)
-   IF (LBUDGET_RR) CALL BUDGET_DDH (PRRS(:,:)*PRHODJ(:,:),8,'WETH_BU_RRR',YDDDH, YDLDDH, YDMDDH)
-   IF (LBUDGET_RI) CALL BUDGET_DDH (PRIS(:,:)*PRHODJ(:,:),9,'WETH_BU_RRI',YDDDH, YDLDDH, YDMDDH)
-   IF (LBUDGET_RS) CALL BUDGET_DDH (PRSS(:,:)*PRHODJ(:,:),10,'WETH_BU_RRS',YDDDH, YDLDDH, YDMDDH)
-   IF (LBUDGET_RG) CALL BUDGET_DDH (PRGS(:,:)*PRHODJ(:,:),11,'WETH_BU_RRG',YDDDH, YDLDDH, YDMDDH)
-   IF (LBUDGET_RH) CALL BUDGET_DDH (PRHS(:,:)*PRHODJ(:,:),12,'WETH_BU_RRH',YDDDH, YDLDDH, YDMDDH)
-   IF (LBUDGET_TH) CALL BUDGET_DDH (PTHS(:,:)*PRHODJ(:,:),4,'HMLT_BU_RTH',YDDDH, YDLDDH, YDMDDH)
-   IF (LBUDGET_RR) CALL BUDGET_DDH (PRRS(:,:)*PRHODJ(:,:),8,'HMLT_BU_RRR',YDDDH, YDLDDH, YDMDDH)
-   IF (LBUDGET_RH) CALL BUDGET_DDH (PRHS(:,:)*PRHODJ(:,:),12,'HMLT_BU_RRH',YDDDH, YDLDDH, YDMDDH)
+   IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TH), 'WETH', ZBU0(:,:))
+   IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RC), 'WETH', ZBU0(:,:))
+   IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RR), 'WETH', ZBU0(:,:))
+   IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RI), 'WETH', ZBU0(:,:))
+   IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RS), 'WETH', ZBU0(:,:))
+   IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RG), 'WETH', ZBU0(:,:))
+   IF (BUCONF%LBUDGET_RH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RH), 'WETH', ZBU0(:,:))
+   IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TH), 'HMLT', ZBU0(:,:))
+   IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RR), 'HMLT', ZBU0(:,:))
+   IF (BUCONF%LBUDGET_RH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RH), 'HMLT', ZBU0(:,:))
  ENDIF
 
  !rain_ice_fast_ri
- IF (LBUDGET_TH) CALL BUDGET_DDH (PTHS(:,:)*PRHODJ(:,:),4,'IMLT_BU_RTH',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RC) CALL BUDGET_DDH (PRCS(:,:)*PRHODJ(:,:),7,'IMLT_BU_RRC',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RI) CALL BUDGET_DDH (PRIS(:,:)*PRHODJ(:,:),9,'IMLT_BU_RRI',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_TH) CALL BUDGET_DDH (PTHS(:,:)*PRHODJ(:,:),4,'BERFI_BU_RTH',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RC) CALL BUDGET_DDH (PRCS(:,:)*PRHODJ(:,:),7,'BERFI_BU_RRC',YDDDH, YDLDDH, YDMDDH)
- IF (LBUDGET_RI) CALL BUDGET_DDH (PRIS(:,:)*PRHODJ(:,:),9,'BERFI_BU_RRI',YDDDH, YDLDDH, YDMDDH)
-
+ IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TH), 'IMLT', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RC), 'IMLT', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RI), 'IMLT', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TH), 'BERFI', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RC), 'BERFI', ZBU0(:,:))
+ IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RI), 'BERFI', ZBU0(:,:))
+
+ ENDIF !BUCONF%LBU_ENABLE
 END IF
 !
 !-------------------------------------------------------------------------------
@@ -1149,6 +1156,17 @@ END IF
 !*       8.1    time splitting loop initialization
 !
 IF (HSEDIM == 'STAT') THEN
+  IF(BUCONF%LBU_ENABLE) THEN
+    IF (BUCONF%LBUDGET_RC .AND. OSEDIC) &
+                    CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RC),'SEDI', PRCS(:,:)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RR),'SEDI', PRRS(:,:)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RI),'SEDI', PRIS(:,:)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RS), 'SEDI', PRSS(:,:)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RG), 'SEDI', PRGS(:,:)*PRHODJ(:,:))
+    IF (KRR == 7 .AND. BUCONF%LBUDGET_RH) &
+                    CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RH), 'SEDI', PRHS(:,:)*PRHODJ(:,:))
+  ENDIF
+
   CALL RAIN_ICE_OLD_SEDIMENTATION_STAT(D, CST, ICEP, ICED, &
                                        KRR, OSEDIC, PTSTEP, KKL, IKB, IKE, &
                                        PDZZ, PRHODJ, PRHODREF, PPABST, &
@@ -1158,16 +1176,29 @@ IF (HSEDIM == 'STAT') THEN
                                        ZRAY, ZLBC, ZFSEDC, ZCONC3D, &
                                        PRHT, PRHS, PINPRH, PFPR)
 
-    IF (LBUDGET_RC .AND. OSEDIC) &
-                    CALL BUDGET_DDH (PRCS(:,:)*PRHODJ(:,:),7 ,'SEDI_BU_RRC',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RR) CALL BUDGET_DDH (PRRS(:,:)*PRHODJ(:,:),8 ,'SEDI_BU_RRR',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RI) CALL BUDGET_DDH (PRIS(:,:)*PRHODJ(:,:),9 ,'SEDI_BU_RRI',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RS) CALL BUDGET_DDH (PRSS(:,:)*PRHODJ(:,:),10,'SEDI_BU_RRS',YDDDH, YDLDDH, YDMDDH)
-    IF (LBUDGET_RG) CALL BUDGET_DDH (PRGS(:,:)*PRHODJ(:,:),11,'SEDI_BU_RRG',YDDDH, YDLDDH, YDMDDH)
-    IF ( KRR == 7 .AND. LBUDGET_RH) &
-                    CALL BUDGET_DDH (PRHS(:,:)*PRHODJ(:,:),12,'SEDI_BU_RRH',YDDDH, YDLDDH, YDMDDH)
+  IF(BUCONF%LBU_ENABLE) THEN
+    IF (BUCONF%LBUDGET_RC .AND. OSEDIC) &
+                    CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RC),'SEDI', PRCS(:,:)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RR),'SEDI', PRRS(:,:)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RI),'SEDI', PRIS(:,:)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RS), 'SEDI', PRSS(:,:)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RG), 'SEDI', PRGS(:,:)*PRHODJ(:,:))
+    IF (KRR == 7 .AND. BUCONF%LBUDGET_RH) &
+                    CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RH), 'SEDI', PRHS(:,:)*PRHODJ(:,:))
+  ENDIF
 
 ELSEIF (HSEDIM == 'SPLI') THEN
+  IF(BUCONF%LBU_ENABLE) THEN
+    IF (BUCONF%LBUDGET_RC .AND. OSEDIC) &
+                    CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RC),'SEDI', PRCS(:,:)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RR),'SEDI', PRRS(:,:)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RI),'SEDI', PRIS(:,:)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RS), 'SEDI', PRSS(:,:)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RG), 'SEDI', PRGS(:,:)*PRHODJ(:,:))
+    IF (KRR == 7 .AND. BUCONF%LBUDGET_RH) &
+                    CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RH), 'SEDI', PRHS(:,:)*PRHODJ(:,:))
+  ENDIF
+
   CALL RAIN_ICE_OLD_SEDIMENTATION_SPLIT(D, CST, ICEP, ICED, KSIZE, &
                                         KRR, OSEDIC, PTSTEP, KKL, IKB, KSPLITR, &
                                         PDZZ, PRHODJ, PRHODREF, PPABST, &
@@ -1177,15 +1208,16 @@ ELSEIF (HSEDIM == 'SPLI') THEN
                                         ZRAY, ZLBC, ZFSEDC, ZCONC3D, &
                                         PRHT, PRHS, PINPRH, PFPR)
 
-  IF (LBUDGET_RC .AND. OSEDIC) &
-                  CALL BUDGET_DDH (PRCS(:,:)*PRHODJ(:,:),7 ,'SEDI_BU_RRC',YDDDH, YDLDDH, YDMDDH)
-  IF (LBUDGET_RR) CALL BUDGET_DDH (PRRS(:,:)*PRHODJ(:,:),8 ,'SEDI_BU_RRR',YDDDH, YDLDDH, YDMDDH)
-  IF (LBUDGET_RI) CALL BUDGET_DDH (PRIS(:,:)*PRHODJ(:,:),9 ,'SEDI_BU_RRI',YDDDH, YDLDDH, YDMDDH)
-  IF (LBUDGET_RS) CALL BUDGET_DDH (PRSS(:,:)*PRHODJ(:,:),10,'SEDI_BU_RRS',YDDDH, YDLDDH, YDMDDH)
-  IF (LBUDGET_RG) CALL BUDGET_DDH (PRGS(:,:)*PRHODJ(:,:),11,'SEDI_BU_RRG',YDDDH, YDLDDH, YDMDDH)
-  IF ( KRR == 7 .AND. LBUDGET_RH) &
-                  CALL BUDGET_DDH (PRHS(:,:)*PRHODJ(:,:),12,'SEDI_BU_RRH',YDDDH, YDLDDH, YDMDDH)
-
+  IF(BUCONF%LBU_ENABLE) THEN
+    IF (BUCONF%LBUDGET_RC .AND. OSEDIC) &
+                    CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RC),'SEDI', PRCS(:,:)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RR),'SEDI', PRRS(:,:)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RI),'SEDI', PRIS(:,:)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RS), 'SEDI', PRSS(:,:)*PRHODJ(:,:))
+    IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RG), 'SEDI', PRGS(:,:)*PRHODJ(:,:))
+    IF (KRR == 7 .AND. BUCONF%LBUDGET_RH) &
+                    CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RH), 'SEDI', PRHS(:,:)*PRHODJ(:,:))
+  ENDIF
 ELSE
   WRITE(*,*) ' STOP'
   WRITE(*,*) ' NO SEDIMENTATION SCHEME FOR HSEDIM=',HSEDIM
diff --git a/src/testprogs/rain_ice_old/main_rain_ice_old.F90 b/src/testprogs/rain_ice_old/main_rain_ice_old.F90
index ed882f01b9529a8bdc828a7e7ede8df4e55ca233..1c771702fcd7085186787b5ed85554432e829120 100644
--- a/src/testprogs/rain_ice_old/main_rain_ice_old.F90
+++ b/src/testprogs/rain_ice_old/main_rain_ice_old.F90
@@ -8,15 +8,12 @@ program main_rain_ice_old
   use yomhook, only: lhook, dr_hook
   use parkind1, only: jprb, jpim
 
-  use ddh_mix, only: typ_ddh
-  use yomlddh, only: tlddh
-  use yommddh, only: tmddh
-
   use modd_dimphyex, only: dimphyex_t
   use modd_cst, only: cst
   use modd_rain_ice_param, only: rain_ice_param
   use modd_rain_ice_descr, only: rain_ice_descr
   use modd_param_ice,      only: param_ice
+  use modd_budget
 
   use iso_fortran_env, only: output_unit
 
@@ -81,14 +78,11 @@ program main_rain_ice_old
   character(len=4) :: c_micro
   character(len=4) :: csubg_aucv_rc
   logical :: owarm
+  TYPE(TBUDGETDATA), DIMENSION(NBUDGET_RH) :: YLBUDGET
 
   real    :: ptstep
 
-  integer :: i,j
-
-  type(typ_ddh) :: ydddh
-  type(tlddh)   :: ydlddh
-  type(tmddh)   :: ydmddh
+  integer :: i, j, jrr
 
   real(8) :: time_start_real, time_end_real
   real(8) :: time_start_cpu, time_end_cpu
@@ -162,6 +156,10 @@ program main_rain_ice_old
   c_sedim = 'STAT'
   csubg_aucv_rc = 'PDF'
 
+DO JRR=1, NBUDGET_RH
+  YLBUDGET(JRR)%NBUDGET=JRR
+ENDDO
+
   ptstep = 25.0000000000000
 
   call initoptions()
@@ -244,7 +242,7 @@ program main_rain_ice_old
     if (isize .gt. 0) then
 
       call rain_ice_old(D=D, cst=cst, parami=param_ice,                                    &
-                        icep=rain_ice_param, iced=rain_ice_descr,                          &
+                        icep=rain_ice_param, iced=rain_ice_descr, buconf=tbuconf,          &
                         osedic=osedic, ocnd2=ocnd2,                                        &
                         lkogan=lkogan, lmodicedep=lmodicedep,                              &
                         hsedim=c_sedim, hsubg_aucv_rc=csubg_aucv_rc, owarm=owarm,          &
@@ -265,7 +263,7 @@ program main_rain_ice_old
                         pinprc=zinprc(:,i), pinprr=pinprr(:,i), pevap3d=pevap(:,:,i),      &
                         pinprs=pinprs(:,i), pinprg=pinprg(:,i), psigs=psigs(:,:,i),        &
                         psea=psea(:,i), ptown=ptown(:,i),                                  &
-                        ydddh=ydddh, ydlddh=ydlddh, ydmddh=ydmddh,                         &
+                        TBUDGETS=YLBUDGET, KBUDGETS=SIZE(YLBUDGET),                        &
                         picenu=picenu(:,i),                                                &
                         pkgn_acon=pkgn_acon(:,i), pkgn_sbgr=pkgn_sbgr(:,i),                &
                         pfpr=pfpr(:,:,:,i))
diff --git a/tools/check_commit_ial.sh b/tools/check_commit_ial.sh
index e5136d8dccf4bc21859488c9abe359cd67d0d378..f20bbafae7ea849a4d874d807c7ba0e4c59a307f 100755
--- a/tools/check_commit_ial.sh
+++ b/tools/check_commit_ial.sh
@@ -339,6 +339,14 @@ if [ $packcreation -eq 1 ]; then
   for rep in turb micro conv aux; do
     [ -d PHYEX/$rep ] && mv PHYEX/$rep .
   done
+  #modd_nsv.F90 has been moved and gmkpack is lost in case a different version exists in main/.../micro
+  if [ -f ../../main/phyex/micro/modd_nsv.F90 -a -f aux/modd_nsv.F90 ]; then
+    mv aux/modd_nsv.F90 micro/
+    if [ -f PHYEX/gmkpack_ignored_files ]; then
+      grep -v micro/modd_nsv.F90 PHYEX/gmkpack_ignored_files > PHYEX/gmkpack_ignored_files_new
+      mv PHYEX/gmkpack_ignored_files_new PHYEX/gmkpack_ignored_files
+    fi
+  fi
   if [ -f PHYEX/gmkpack_ignored_files ]; then
     #gmkpack_ignored_files contains a list of file, present in the reference pack, that is not used anymore
     #and must be excluded from compilation (in case of a full comilation) or from re-compilation (in case of a non-full