From 6c8af480151588f281a0ef70074af97b047b7dc5 Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Fri, 8 Nov 2019 13:18:02 +0100
Subject: [PATCH] Philippe 08/11/2019: use NBUDGET_* parameters to identify all
 budget indices

---
 src/MNH/adv_forcingn.f90                 |   5 +-
 src/MNH/advecmet.f90                     |  63 ++-
 src/MNH/advecmet_4th.f90                 |  63 ++-
 src/MNH/advecscalar.f90                  |  15 +-
 src/MNH/advecscalar_4th.f90              |  13 +-
 src/MNH/advection_metsv.f90              |  26 +-
 src/MNH/advection_uvw.f90                |   6 +-
 src/MNH/advection_uvw_cen.f90            |   6 +-
 src/MNH/advecuvw.f90                     |  25 +-
 src/MNH/c2r2_adjust.f90                  |  10 +-
 src/MNH/ch_monitorn.f90                  |   2 +-
 src/MNH/drag_veg.f90                     |  15 +-
 src/MNH/dyn_sources.f90                  |  22 +-
 src/MNH/exchange.f90                     |   6 +-
 src/MNH/fast_terms.f90                   |   6 +-
 src/MNH/fct_met.f90                      |  81 ++--
 src/MNH/fct_scalar.f90                   |  15 +-
 src/MNH/forcing.f90                      |  26 +-
 src/MNH/gravity_impl.f90                 |   6 +-
 src/MNH/ice_adjust.f90                   |   8 +-
 src/MNH/ice_adjust_elec.f90              |  16 +-
 src/MNH/ion_attach_elec.f90              |   4 +-
 src/MNH/khko_notadjust.f90               |  10 +-
 src/MNH/les_budget.f90                   |  19 +-
 src/MNH/lima.f90                         | 248 +++++------
 src/MNH/lima_adjust.f90                  |  16 +-
 src/MNH/lima_cold.f90                    |  10 +-
 src/MNH/lima_cold_hom_nucl.f90           |  60 +--
 src/MNH/lima_cold_slow_processes.f90     |  48 +--
 src/MNH/lima_meyers.f90                  |  40 +-
 src/MNH/lima_mixed.f90                   | 148 +++----
 src/MNH/lima_mixed_fast_processes.f90    | 122 +++---
 src/MNH/lima_mixed_slow_processes.f90    |  27 +-
 src/MNH/lima_nucleation_procs.f90        |  69 +--
 src/MNH/lima_phillips.f90                |  40 +-
 src/MNH/lima_precip_scavenging.f90       |   6 +-
 src/MNH/lima_warm.f90                    |  36 +-
 src/MNH/lima_warm_coal.f90               |  36 +-
 src/MNH/mpdata.f90                       |  26 +-
 src/MNH/mpdata_scalar.f90                |   6 +-
 src/MNH/nudging.f90                      |  19 +-
 src/MNH/num_diff.f90                     |  28 +-
 src/MNH/phys_paramn.f90                  |  12 +-
 src/MNH/pressure.f90                     |   6 +-
 src/MNH/pressurez.f90                    |   6 +-
 src/MNH/rain_c2r2_khko.f90               | 102 ++---
 src/MNH/rain_ice.f90                     | 144 +++----
 src/MNH/rain_ice_elec.f90                | 508 +++++++++++------------
 src/MNH/rain_ice_fast_rg.f90             |  45 +-
 src/MNH/rain_ice_fast_rh.f90             |  23 +-
 src/MNH/rain_ice_fast_ri.f90             |  15 +-
 src/MNH/rain_ice_fast_rs.f90             |  23 +-
 src/MNH/rain_ice_nucleation.f90          |   9 +-
 src/MNH/rain_ice_red.f90                 | 212 +++++-----
 src/MNH/rain_ice_sedimentation_split.f90 |  17 +-
 src/MNH/rain_ice_sedimentation_stat.f90  |  17 +-
 src/MNH/rain_ice_slow.f90                |  35 +-
 src/MNH/rain_ice_warm.f90                |  17 +-
 src/MNH/rel_forcingn.f90                 |   4 +-
 src/MNH/relax2fw_ion.f90                 |  21 +-
 src/MNH/relaxation.f90                   |  33 +-
 src/MNH/resolved_cloud.f90               |  38 +-
 src/MNH/resolved_elecn.f90               |  18 +-
 src/MNH/shallow_mf_pack.f90              |  10 +-
 src/MNH/slow_terms.f90                   |  16 +-
 src/MNH/tke_eps_sources.f90              |   8 +-
 src/MNH/turb.f90                         |  62 +--
 src/MNH/two_way.f90                      |  24 +-
 src/MNH/viscosity.f90                    |  24 +-
 69 files changed, 1444 insertions(+), 1458 deletions(-)

diff --git a/src/MNH/adv_forcingn.f90 b/src/MNH/adv_forcingn.f90
index 5a8246825..71b55df3e 100644
--- a/src/MNH/adv_forcingn.f90
+++ b/src/MNH/adv_forcingn.f90
@@ -2,6 +2,7 @@
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 !     #####################
       MODULE MODI_ADV_FORCING_n
 !     #####################
@@ -227,8 +228,8 @@ END IF
 !
 !*       3.     BUDGET CALLS
 !   	        ------------
-IF (LBUDGET_TH)  CALL BUDGET (PRTHS,4,'2DADV_BU_RTH')
-IF (LBUDGET_RV)  CALL BUDGET (PRRS(:,:,:,1),6,'2DADV_BU_RRV')
+IF (LBUDGET_TH)  CALL BUDGET (PRTHS,NBUDGET_TH,'2DADV_BU_RTH')
+IF (LBUDGET_RV)  CALL BUDGET (PRRS(:,:,:,1),NBUDGET_RV,'2DADV_BU_RRV')
 !----------------------------------------------------------------------------
 !
 END SUBROUTINE ADV_FORCING_n
diff --git a/src/MNH/advecmet.f90 b/src/MNH/advecmet.f90
index 0297798cf..d375b1082 100644
--- a/src/MNH/advecmet.f90
+++ b/src/MNH/advecmet.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 adiab 2006/05/22 19:02:00
-!-----------------------------------------------------------------
 !     #######################
       MODULE MODI_ADVECMET 
 !     #######################
@@ -174,15 +169,15 @@ IKU=SIZE(XZHAT)
                                         ! Thermodynamical variable
 PRTHS(:,:,:) = PRTHS(:,:,:)                            &
               -DXF( PRUCT(:,:,:) * MXM (PTHT(:,:,:)) ) 
-IF (LBUDGET_TH) CALL BUDGET (PRTHS,4,'ADVX_BU_RTH')
+IF (LBUDGET_TH) CALL BUDGET (PRTHS,NBUDGET_TH,'ADVX_BU_RTH')
 !
 PRTHS(:,:,:) = PRTHS(:,:,:)                            &
               -DYF( PRVCT(:,:,:) * MYM (PTHT(:,:,:)) ) 
-IF (LBUDGET_TH) CALL BUDGET (PRTHS,4,'ADVY_BU_RTH')
+IF (LBUDGET_TH) CALL BUDGET (PRTHS,NBUDGET_TH,'ADVY_BU_RTH')
 !
 PRTHS(:,:,:) = PRTHS(:,:,:)                            &
               -DZF(1,IKU,1, PRWCT(:,:,:) * MZM (1,IKU,1,PTHT(:,:,:)) )
-IF (LBUDGET_TH) CALL BUDGET (PRTHS,4,'ADVZ_BU_RTH')
+IF (LBUDGET_TH) CALL BUDGET (PRTHS,NBUDGET_TH,'ADVZ_BU_RTH')
 !
                                         ! Case with KRR moist variables 
 DO JRR=1,KRR
@@ -190,53 +185,53 @@ DO JRR=1,KRR
                    -DXF( PRUCT(:,:,:) * MXM (PRT(:,:,:,JRR)) ) 
 END DO
 !
-IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),6 ,'ADVX_BU_RRV')
-IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),7 ,'ADVX_BU_RRC')
-IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,3),8 ,'ADVX_BU_RRR')
-IF (LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4),9 ,'ADVX_BU_RRI')
-IF (LBUDGET_RS) CALL BUDGET (PRRS(:,:,:,5),10,'ADVX_BU_RRS')
-IF (LBUDGET_RG) CALL BUDGET (PRRS(:,:,:,6),11,'ADVX_BU_RRG')
-IF (LBUDGET_RH) CALL BUDGET (PRRS(:,:,:,7),12,'ADVX_BU_RRH')
+IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),NBUDGET_RV,'ADVX_BU_RRV')
+IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),NBUDGET_RC,'ADVX_BU_RRC')
+IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,3),NBUDGET_RR,'ADVX_BU_RRR')
+IF (LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4),NBUDGET_RI,'ADVX_BU_RRI')
+IF (LBUDGET_RS) CALL BUDGET (PRRS(:,:,:,5),NBUDGET_RS,'ADVX_BU_RRS')
+IF (LBUDGET_RG) CALL BUDGET (PRRS(:,:,:,6),NBUDGET_RG,'ADVX_BU_RRG')
+IF (LBUDGET_RH) CALL BUDGET (PRRS(:,:,:,7),NBUDGET_RH,'ADVX_BU_RRH')
 !
 DO JRR=1,KRR
   PRRS(:,:,:,JRR) = PRRS(:,:,:,JRR)                            &
                    -DYF( PRVCT(:,:,:) * MYM (PRT(:,:,:,JRR)) ) 
 END DO
 !
-IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),6 ,'ADVY_BU_RRV')
-IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),7 ,'ADVY_BU_RRC')
-IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,3),8 ,'ADVY_BU_RRR')
-IF (LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4),9 ,'ADVY_BU_RRI')
-IF (LBUDGET_RS) CALL BUDGET (PRRS(:,:,:,5),10,'ADVY_BU_RRS')
-IF (LBUDGET_RG) CALL BUDGET (PRRS(:,:,:,6),11,'ADVY_BU_RRG')
-IF (LBUDGET_RH) CALL BUDGET (PRRS(:,:,:,7),12,'ADVY_BU_RRH')
+IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),NBUDGET_RV,'ADVY_BU_RRV')
+IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),NBUDGET_RC,'ADVY_BU_RRC')
+IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,3),NBUDGET_RR,'ADVY_BU_RRR')
+IF (LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4),NBUDGET_RI,'ADVY_BU_RRI')
+IF (LBUDGET_RS) CALL BUDGET (PRRS(:,:,:,5),NBUDGET_RS,'ADVY_BU_RRS')
+IF (LBUDGET_RG) CALL BUDGET (PRRS(:,:,:,6),NBUDGET_RG,'ADVY_BU_RRG')
+IF (LBUDGET_RH) CALL BUDGET (PRRS(:,:,:,7),NBUDGET_RH,'ADVY_BU_RRH')
 !
 DO JRR=1,KRR
   PRRS(:,:,:,JRR) = PRRS(:,:,:,JRR)                            &
                    -DZF(1,IKU,1, PRWCT(:,:,:) * MZM (1,IKU,1,PRT(:,:,:,JRR)) )
 END DO
 !
-IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),6 ,'ADVZ_BU_RRV')
-IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),7 ,'ADVZ_BU_RRC')
-IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,3),8 ,'ADVZ_BU_RRR')
-IF (LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4),9 ,'ADVZ_BU_RRI')
-IF (LBUDGET_RS) CALL BUDGET (PRRS(:,:,:,5),10,'ADVZ_BU_RRS')
-IF (LBUDGET_RG) CALL BUDGET (PRRS(:,:,:,6),11,'ADVZ_BU_RRG')
-IF (LBUDGET_RH) CALL BUDGET (PRRS(:,:,:,7),12,'ADVZ_BU_RRH')
+IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),NBUDGET_RV,'ADVZ_BU_RRV')
+IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),NBUDGET_RC,'ADVZ_BU_RRC')
+IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,3),NBUDGET_RR,'ADVZ_BU_RRR')
+IF (LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4),NBUDGET_RI,'ADVZ_BU_RRI')
+IF (LBUDGET_RS) CALL BUDGET (PRRS(:,:,:,5),NBUDGET_RS,'ADVZ_BU_RRS')
+IF (LBUDGET_RG) CALL BUDGET (PRRS(:,:,:,6),NBUDGET_RG,'ADVZ_BU_RRG')
+IF (LBUDGET_RH) CALL BUDGET (PRRS(:,:,:,7),NBUDGET_RH,'ADVZ_BU_RRH')
 !
                                         ! TKE variable
 IF (SIZE(PTKET,1) /= 0) THEN
   PRTKES(:,:,:) = PRTKES(:,:,:)                            &
                  -DXF( PRUCT(:,:,:) * MXM (PTKET(:,:,:)) ) 
-  IF (LBUDGET_TKE) CALL BUDGET (PRTKES,5,'ADVX_BU_RTKE')
+  IF (LBUDGET_TKE) CALL BUDGET (PRTKES,NBUDGET_TKE,'ADVX_BU_RTKE')
 !
   PRTKES(:,:,:) = PRTKES(:,:,:)                            &
                  -DYF( PRVCT(:,:,:) * MYM (PTKET(:,:,:)) ) 
-  IF (LBUDGET_TKE) CALL BUDGET (PRTKES,5,'ADVY_BU_RTKE')
+  IF (LBUDGET_TKE) CALL BUDGET (PRTKES,NBUDGET_TKE,'ADVY_BU_RTKE')
 !
    PRTKES(:,:,:) = PRTKES(:,:,:)                           &
                  -DZF(1,IKU,1, PRWCT(:,:,:) * MZM (1,IKU,1,PTKET(:,:,:)) )
-  IF (LBUDGET_TKE) CALL BUDGET (PRTKES,5,'ADVZ_BU_RTKE')
+  IF (LBUDGET_TKE) CALL BUDGET (PRTKES,NBUDGET_TKE,'ADVZ_BU_RTKE')
 END IF
 !
 ! 
diff --git a/src/MNH/advecmet_4th.f90 b/src/MNH/advecmet_4th.f90
index b708b8cf0..61c463f30 100644
--- a/src/MNH/advecmet_4th.f90
+++ b/src/MNH/advecmet_4th.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2005-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 adiab 2006/05/22 19:00:38
-!-----------------------------------------------------------------
 !     ###############################
       MODULE MODI_ADVECMET_4TH
 !     ###############################
@@ -237,15 +232,15 @@ IGRID = 1
 !
 PRTHS(:,:,:) = PRTHS(:,:,:)                      &
               -DXF( PRUCT(:,:,:) * ZMEANX(:,:,:) ) 
-IF (LBUDGET_TH) CALL BUDGET (PRTHS,4,'ADVX_BU_RTH')
+IF (LBUDGET_TH) CALL BUDGET (PRTHS,NBUDGET_TH,'ADVX_BU_RTH')
 !
 PRTHS(:,:,:) = PRTHS(:,:,:)                      &
               -DYF( PRVCT(:,:,:) * ZMEANY(:,:,:) ) 
-IF (LBUDGET_TH) CALL BUDGET (PRTHS,4,'ADVY_BU_RTH')
+IF (LBUDGET_TH) CALL BUDGET (PRTHS,NBUDGET_TH,'ADVY_BU_RTH')
 !
 PRTHS(:,:,:) = PRTHS(:,:,:)                           &
               -DZF(1,IKU,1, PRWCT(:,:,:) * MZM4(PTHT(:,:,:)) )
-IF (LBUDGET_TH) CALL BUDGET (PRTHS,4,'ADVZ_BU_RTH')
+IF (LBUDGET_TH) CALL BUDGET (PRTHS,NBUDGET_TH,'ADVZ_BU_RTH')
 !
 ! Turbulence variables
 !
@@ -260,15 +255,15 @@ IF ( GTKEALLOC ) THEN
 !
   PRTKES(:,:,:) = PRTKES(:,:,:) 	            &
                  -DXF( PRUCT(:,:,:) * ZMEANX(:,:,:) ) 
-  IF (LBUDGET_TKE) CALL BUDGET (PRTKES,5,'ADVX_BU_RTKE')
+  IF (LBUDGET_TKE) CALL BUDGET (PRTKES,NBUDGET_TKE,'ADVX_BU_RTKE')
 !
   PRTKES(:,:,:) = PRTKES(:,:,:) 	            &
                  -DYF( PRVCT(:,:,:) * ZMEANY(:,:,:) ) 
-  IF (LBUDGET_TKE) CALL BUDGET (PRTKES,5,'ADVY_BU_RTKE')
+  IF (LBUDGET_TKE) CALL BUDGET (PRTKES,NBUDGET_TKE,'ADVY_BU_RTKE')
 !
    PRTKES(:,:,:) = PRTKES(:,:,:) 	                  &
                  -DZF(1,IKU,1, PRWCT(:,:,:) * MZM4(PTKET(:,:,:)) )
-  IF (LBUDGET_TKE) CALL BUDGET (PRTKES,5,'ADVZ_BU_RTKE')
+  IF (LBUDGET_TKE) CALL BUDGET (PRTKES,NBUDGET_TKE,'ADVZ_BU_RTKE')
 ENDIF
 !
 !
@@ -285,33 +280,33 @@ DO JRR=1, KRR
 !
   PRRS(:,:,:,JRR) = PRRS(:,:,:,JRR)                            &
                      -DXF( PRUCT(:,:,:) * ZMEANX(:,:,:) ) 
-  IF (JRR==1 .AND. LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),6 ,'ADVX_BU_RRV')
-  IF (JRR==2 .AND. LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),7 ,'ADVX_BU_RRC')
-  IF (JRR==3 .AND. LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,3),8 ,'ADVX_BU_RRR')
-  IF (JRR==4 .AND. LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4),9 ,'ADVX_BU_RRI')
-  IF (JRR==5 .AND. LBUDGET_RS) CALL BUDGET (PRRS(:,:,:,5),10,'ADVX_BU_RRS')
-  IF (JRR==6 .AND. LBUDGET_RG) CALL BUDGET (PRRS(:,:,:,6),11,'ADVX_BU_RRG')
-  IF (JRR==7 .AND. LBUDGET_RH) CALL BUDGET (PRRS(:,:,:,7),12,'ADVX_BU_RRH')
+  IF (JRR==1 .AND. LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),NBUDGET_RV,'ADVX_BU_RRV')
+  IF (JRR==2 .AND. LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),NBUDGET_RC,'ADVX_BU_RRC')
+  IF (JRR==3 .AND. LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,3),NBUDGET_RR,'ADVX_BU_RRR')
+  IF (JRR==4 .AND. LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4),NBUDGET_RI,'ADVX_BU_RRI')
+  IF (JRR==5 .AND. LBUDGET_RS) CALL BUDGET (PRRS(:,:,:,5),NBUDGET_RS,'ADVX_BU_RRS')
+  IF (JRR==6 .AND. LBUDGET_RG) CALL BUDGET (PRRS(:,:,:,6),NBUDGET_RG,'ADVX_BU_RRG')
+  IF (JRR==7 .AND. LBUDGET_RH) CALL BUDGET (PRRS(:,:,:,7),NBUDGET_RH,'ADVX_BU_RRH')
 !
   PRRS(:,:,:,JRR) = PRRS(:,:,:,JRR)                            &
                      -DYF( PRVCT(:,:,:) * ZMEANY(:,:,:) )
-  IF (JRR==1 .AND. LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),6 ,'ADVY_BU_RRV')
-  IF (JRR==2 .AND. LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),7 ,'ADVY_BU_RRC')
-  IF (JRR==3 .AND. LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,3),8 ,'ADVY_BU_RRR')
-  IF (JRR==4 .AND. LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4),9 ,'ADVY_BU_RRI')
-  IF (JRR==5 .AND. LBUDGET_RS) CALL BUDGET (PRRS(:,:,:,5),10,'ADVY_BU_RRS')
-  IF (JRR==6 .AND. LBUDGET_RG) CALL BUDGET (PRRS(:,:,:,6),11,'ADVY_BU_RRG')
-  IF (JRR==7 .AND. LBUDGET_RH) CALL BUDGET (PRRS(:,:,:,7),12,'ADVY_BU_RRH')
+  IF (JRR==1 .AND. LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),NBUDGET_RV,'ADVY_BU_RRV')
+  IF (JRR==2 .AND. LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),NBUDGET_RC,'ADVY_BU_RRC')
+  IF (JRR==3 .AND. LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,3),NBUDGET_RR,'ADVY_BU_RRR')
+  IF (JRR==4 .AND. LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4),NBUDGET_RI,'ADVY_BU_RRI')
+  IF (JRR==5 .AND. LBUDGET_RS) CALL BUDGET (PRRS(:,:,:,5),NBUDGET_RS,'ADVY_BU_RRS')
+  IF (JRR==6 .AND. LBUDGET_RG) CALL BUDGET (PRRS(:,:,:,6),NBUDGET_RG,'ADVY_BU_RRG')
+  IF (JRR==7 .AND. LBUDGET_RH) CALL BUDGET (PRRS(:,:,:,7),NBUDGET_RH,'ADVY_BU_RRH')
 !
   PRRS(:,:,:,JRR) = PRRS(:,:,:,JRR)                            &
                     -DZF(1,IKU,1, PRWCT(:,:,:) * MZM4(PRT(:,:,:,JRR)) )
-  IF (JRR==1 .AND. LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),6 ,'ADVZ_BU_RRV')
-  IF (JRR==2 .AND. LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),7 ,'ADVZ_BU_RRC')
-  IF (JRR==3 .AND. LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,3),8 ,'ADVZ_BU_RRR')
-  IF (JRR==4 .AND. LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4),9 ,'ADVZ_BU_RRI')
-  IF (JRR==5 .AND. LBUDGET_RS) CALL BUDGET (PRRS(:,:,:,5),10,'ADVZ_BU_RRS')
-  IF (JRR==6 .AND. LBUDGET_RG) CALL BUDGET (PRRS(:,:,:,6),11,'ADVZ_BU_RRG')
-  IF (JRR==7 .AND. LBUDGET_RH) CALL BUDGET (PRRS(:,:,:,7),12,'ADVZ_BU_RRH')
+  IF (JRR==1 .AND. LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),NBUDGET_RV,'ADVZ_BU_RRV')
+  IF (JRR==2 .AND. LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),NBUDGET_RC,'ADVZ_BU_RRC')
+  IF (JRR==3 .AND. LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,3),NBUDGET_RR,'ADVZ_BU_RRR')
+  IF (JRR==4 .AND. LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4),NBUDGET_RI,'ADVZ_BU_RRI')
+  IF (JRR==5 .AND. LBUDGET_RS) CALL BUDGET (PRRS(:,:,:,5),NBUDGET_RS,'ADVZ_BU_RRS')
+  IF (JRR==6 .AND. LBUDGET_RG) CALL BUDGET (PRRS(:,:,:,6),NBUDGET_RG,'ADVZ_BU_RRG')
+  IF (JRR==7 .AND. LBUDGET_RH) CALL BUDGET (PRRS(:,:,:,7),NBUDGET_RH,'ADVZ_BU_RRH')
 ENDDO
 !
 !
diff --git a/src/MNH/advecscalar.f90 b/src/MNH/advecscalar.f90
index 0377dc0db..4fd1e47a4 100644
--- a/src/MNH/advecscalar.f90
+++ b/src/MNH/advecscalar.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 adiab 2006/05/18 13:07:25
-!-----------------------------------------------------------------
 !     #######################
       MODULE MODI_ADVECSCALAR 
 !     #######################
@@ -146,7 +141,7 @@ DO JSV=1,KSV
 END DO
 IF (LBUDGET_SV) THEN
   DO JSV=1,KSV
-    CALL BUDGET (PRSVS(:,:,:,JSV),JSV+12,'ADVX_BU_RSV')
+    CALL BUDGET (PRSVS(:,:,:,JSV),JSV+NBUDGET_SV1-1,'ADVX_BU_RSV')
   END DO
 END IF
 !
@@ -156,7 +151,7 @@ DO JSV=1,KSV
 END DO
 IF (LBUDGET_SV) THEN
   DO JSV=1,KSV
-    CALL BUDGET (PRSVS(:,:,:,JSV),JSV+12,'ADVY_BU_RSV')
+    CALL BUDGET (PRSVS(:,:,:,JSV),JSV+NBUDGET_SV1-1,'ADVY_BU_RSV')
   END DO
 END IF
 !
@@ -166,7 +161,7 @@ DO JSV=1,KSV
 END DO
 IF (LBUDGET_SV) THEN
   DO JSV=1,KSV
-    CALL BUDGET (PRSVS(:,:,:,JSV),JSV+12,'ADVZ_BU_RSV')
+    CALL BUDGET (PRSVS(:,:,:,JSV),JSV+NBUDGET_SV1-1,'ADVZ_BU_RSV')
   END DO
 END IF
 !
diff --git a/src/MNH/advecscalar_4th.f90 b/src/MNH/advecscalar_4th.f90
index 1cf233594..d41632edb 100644
--- a/src/MNH/advecscalar_4th.f90
+++ b/src/MNH/advecscalar_4th.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2005-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 adiab 2006/05/18 13:07:25
-!-----------------------------------------------------------------
 !     ###############################
       MODULE MODI_ADVECSCALAR_4TH
 !     ###############################
@@ -193,15 +188,15 @@ DO JSV=1,KSV
 !
   PRSVS(:,:,:,JSV) = PRSVS(:,:,:,JSV)                            &
                     -DXF( PRUCT(:,:,:) * ZMEANX(:,:,:) )
-  IF (LBUDGET_SV) CALL BUDGET (PRSVS(:,:,:,JSV),JSV+12,'ADVX_BU_RSV')
+  IF (LBUDGET_SV) CALL BUDGET (PRSVS(:,:,:,JSV),JSV+NBUDGET_SV1-1,'ADVX_BU_RSV')
 !
   PRSVS(:,:,:,JSV) = PRSVS(:,:,:,JSV)                            &
                     -DYF( PRVCT(:,:,:) * ZMEANY(:,:,:) ) 
-  IF (LBUDGET_SV) CALL BUDGET (PRSVS(:,:,:,JSV),JSV+12,'ADVY_BU_RSV')
+  IF (LBUDGET_SV) CALL BUDGET (PRSVS(:,:,:,JSV),JSV+NBUDGET_SV1-1,'ADVY_BU_RSV')
 !
   PRSVS(:,:,:,JSV) = PRSVS(:,:,:,JSV)                           &
                     -DZF(1,IKU,1,  PRWCT(:,:,:) * MZM4(PSVT(:,:,:,JSV)) )
-  IF (LBUDGET_SV) CALL BUDGET (PRSVS(:,:,:,JSV),JSV+12,'ADVZ_BU_RSV')
+  IF (LBUDGET_SV) CALL BUDGET (PRSVS(:,:,:,JSV),JSV+NBUDGET_SV1-1,'ADVZ_BU_RSV')
 ENDDO
 !
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/advection_metsv.f90 b/src/MNH/advection_metsv.f90
index 507178426..082a38516 100644
--- a/src/MNH/advection_metsv.f90
+++ b/src/MNH/advection_metsv.f90
@@ -656,17 +656,17 @@ END IF
 !*       5.     BUDGETS                                                 
 !	        -------
 !
-IF (LBUDGET_TH)  CALL BUDGET (PRTHS,4,'ADV_BU_RTH')
-IF (LBUDGET_TKE) CALL BUDGET (PRTKES,5,'ADV_BU_RTKE')
-IF (KRR>=1.AND.LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),6,'ADV_BU_RRV') 
-IF (KRR>=2.AND.LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),7,'ADV_BU_RRC') 
-IF (KRR>=3.AND.LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,3),8,'ADV_BU_RRR') 
-IF (KRR>=4.AND.LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4),9,'ADV_BU_RRI') 
-IF (KRR>=5.AND.LBUDGET_RS) CALL BUDGET (PRRS(:,:,:,5),10,'ADV_BU_RRS') 
-IF (KRR>=6.AND.LBUDGET_RG) CALL BUDGET (PRRS(:,:,:,6),11,'ADV_BU_RRG') 
-IF (KRR>=7.AND.LBUDGET_RH) CALL BUDGET (PRRS(:,:,:,7),12,'ADV_BU_RRH')
+IF ( LBUDGET_TH )                CALL BUDGET( PRTHS,             NBUDGET_TH,        'ADV_BU_RTH'  )
+IF ( LBUDGET_TKE )               CALL BUDGET( PRTKES,            NBUDGET_TKE,       'ADV_BU_RTKE' )
+IF ( KRR >= 1 .AND. LBUDGET_RV ) CALL BUDGET( PRRS(:, :, :, 1 ), NBUDGET_RV,        'ADV_BU_RRV'  )
+IF ( KRR >= 2 .AND. LBUDGET_RC ) CALL BUDGET( PRRS(:, :, :, 2 ), NBUDGET_RC,        'ADV_BU_RRC'  )
+IF ( KRR >= 3 .AND. LBUDGET_RR ) CALL BUDGET( PRRS(:, :, :, 3 ), NBUDGET_RR,        'ADV_BU_RRR'  )
+IF ( KRR >= 4 .AND. LBUDGET_RI ) CALL BUDGET( PRRS(:, :, :, 4 ), NBUDGET_RI,        'ADV_BU_RRI'  )
+IF ( KRR >= 5 .AND. LBUDGET_RS ) CALL BUDGET( PRRS(:, :, :, 5 ), NBUDGET_RS,        'ADV_BU_RRS'  )
+IF ( KRR >= 6 .AND. LBUDGET_RG ) CALL BUDGET( PRRS(:, :, :, 6 ), NBUDGET_RG,        'ADV_BU_RRG'  )
+IF ( KRR >= 7 .AND. LBUDGET_RH ) CALL BUDGET( PRRS(:, :, :, 7 ), NBUDGET_RH,        'ADV_BU_RRH'  )
 DO JSV=1,KSV
-  IF (LBUDGET_SV) CALL BUDGET (PRSVS(:,:,:,JSV),JSV+12,'ADV_BU_RSV')
+  IF ( LBUDGET_SV )              CALL BUDGET (PRSVS(:,:,:,JSV),  JSV+NBUDGET_SV1-1, 'ADV_BU_RSV' )
 END DO
 !
 IF ((HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2')) THEN
@@ -691,9 +691,9 @@ IF ((HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2')) THEN
     END WHERE
   END DO
 !
-  IF (LBUDGET_TH) CALL BUDGET (PRTHS(:,:,:) , 4,'NEADV_BU_RTH')
-  IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1), 6,'NEADV_BU_RRV')
-  IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2), 7,'NEADV_BU_RRC')
+  IF (LBUDGET_TH) CALL BUDGET (PRTHS(:,:,:) , NBUDGET_TH,'NEADV_BU_RTH')
+  IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1), NBUDGET_RV,'NEADV_BU_RRV')
+  IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2), NBUDGET_RC,'NEADV_BU_RRC')
 
 END IF
 
diff --git a/src/MNH/advection_uvw.f90 b/src/MNH/advection_uvw.f90
index cce091935..54b6db96a 100644
--- a/src/MNH/advection_uvw.f90
+++ b/src/MNH/advection_uvw.f90
@@ -319,9 +319,9 @@ END DO
 !*       4.     BUDGETS              
 !	        -------
 !
-IF (LBUDGET_U)  CALL BUDGET (PRUS,1,'ADV_BU_RU')
-IF (LBUDGET_V)  CALL BUDGET (PRVS,2,'ADV_BU_RV')
-IF (LBUDGET_W)  CALL BUDGET (PRWS,3,'ADV_BU_RW')
+IF (LBUDGET_U)  CALL BUDGET (PRUS,NBUDGET_U,'ADV_BU_RU')
+IF (LBUDGET_V)  CALL BUDGET (PRVS,NBUDGET_V,'ADV_BU_RV')
+IF (LBUDGET_W)  CALL BUDGET (PRWS,NBUDGET_W,'ADV_BU_RW')
 !-------------------------------------------------------------------------------
 !
 END SUBROUTINE ADVECTION_UVW
diff --git a/src/MNH/advection_uvw_cen.f90 b/src/MNH/advection_uvw_cen.f90
index e675af5bf..ea8051c4e 100644
--- a/src/MNH/advection_uvw_cen.f90
+++ b/src/MNH/advection_uvw_cen.f90
@@ -248,9 +248,9 @@ PDUM = ZUS(:,:,:) - PUM(:,:,:)
 PDVM = ZVS(:,:,:) - PVM(:,:,:)
 PDWM = ZWS(:,:,:) - PWM(:,:,:)
 !
-IF (LBUDGET_U)  CALL BUDGET (PRUS,1,'ADV_BU_RU')
-IF (LBUDGET_V)  CALL BUDGET (PRVS,2,'ADV_BU_RV')
-IF (LBUDGET_W)  CALL BUDGET (PRWS,3,'ADV_BU_RW')
+IF (LBUDGET_U)  CALL BUDGET (PRUS,NBUDGET_U,'ADV_BU_RU')
+IF (LBUDGET_V)  CALL BUDGET (PRVS,NBUDGET_V,'ADV_BU_RV')
+IF (LBUDGET_W)  CALL BUDGET (PRWS,NBUDGET_W,'ADV_BU_RW')
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/advecuvw.f90 b/src/MNH/advecuvw.f90
index d0f32702b..c0488bbda 100644
--- a/src/MNH/advecuvw.f90
+++ b/src/MNH/advecuvw.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 adiab 2006/05/18 13:07:25
-!-----------------------------------------------------------------
 !     ####################
       MODULE MODI_ADVECUVW 
 !     ####################
@@ -146,41 +141,41 @@ IKU=SIZE(XZHAT)
 !
 PRUS(:,:,:) = PRUS(:,:,:)                              &
              -DXM( MXF(PRUCT(:,:,:))*MXF(PUT(:,:,:)) ) 
-IF (LBUDGET_U)  CALL BUDGET (PRUS,1,'ADVX_BU_RU')
+IF (LBUDGET_U)  CALL BUDGET (PRUS,NBUDGET_U,'ADVX_BU_RU')
 !
 PRUS(:,:,:) = PRUS(:,:,:)                              &
              -DYF( MXM(PRVCT(:,:,:))*MYM(PUT(:,:,:)) ) 
-IF (LBUDGET_U)  CALL BUDGET (PRUS,1,'ADVY_BU_RU')
+IF (LBUDGET_U)  CALL BUDGET (PRUS,NBUDGET_U,'ADVY_BU_RU')
 !
 PRUS(:,:,:) = PRUS(:,:,:)                              &
              -DZF(1,IKU,1, MXM(PRWCT(:,:,:))*MZM(1,IKU,1,PUT(:,:,:)) )
-IF (LBUDGET_U)  CALL BUDGET (PRUS,1,'ADVZ_BU_RU')
+IF (LBUDGET_U)  CALL BUDGET (PRUS,NBUDGET_U,'ADVZ_BU_RU')
 !
 !
 PRVS(:,:,:) = PRVS(:,:,:)                              &
              -DXF( MYM(PRUCT(:,:,:))*MXM(PVT(:,:,:)) ) 
-IF (LBUDGET_V)  CALL BUDGET (PRVS,2,'ADVX_BU_RV')
+IF (LBUDGET_V)  CALL BUDGET (PRVS,NBUDGET_V,'ADVX_BU_RV')
 !
 PRVS(:,:,:) = PRVS(:,:,:)                              &
              -DYM( MYF(PRVCT(:,:,:))*MYF(PVT(:,:,:)) )  
-IF (LBUDGET_V)  CALL BUDGET (PRVS,2,'ADVY_BU_RV')
+IF (LBUDGET_V)  CALL BUDGET (PRVS,NBUDGET_V,'ADVY_BU_RV')
 !
 PRVS(:,:,:) = PRVS(:,:,:)                              &
              -DZF(1,IKU,1, MYM(PRWCT(:,:,:))*MZM(1,IKU,1,PVT(:,:,:)) )
-IF (LBUDGET_V)  CALL BUDGET (PRVS,2,'ADVZ_BU_RV')
+IF (LBUDGET_V)  CALL BUDGET (PRVS,NBUDGET_V,'ADVZ_BU_RV')
 !
 !
 PRWS(:,:,:) = PRWS(:,:,:)                              &
              -DXF( MZM(1,IKU,1,PRUCT(:,:,:))*MXM(PWT(:,:,:)) ) 
-IF (LBUDGET_W)  CALL BUDGET (PRWS,3,'ADVX_BU_RW')
+IF (LBUDGET_W)  CALL BUDGET (PRWS,NBUDGET_W,'ADVX_BU_RW')
 !
 PRWS(:,:,:) = PRWS(:,:,:)                              &
              -DYF( MZM(1,IKU,1,PRVCT(:,:,:))*MYM(PWT(:,:,:)) ) 
-IF (LBUDGET_W)  CALL BUDGET (PRWS,3,'ADVY_BU_RW')
+IF (LBUDGET_W)  CALL BUDGET (PRWS,NBUDGET_W,'ADVY_BU_RW')
 !
 PRWS(:,:,:) = PRWS(:,:,:)                              &
              -DZM(1,IKU,1, MZF(1,IKU,1,PRWCT(:,:,:))*MZF(1,IKU,1,PWT(:,:,:)) )
-IF (LBUDGET_W)  CALL BUDGET (PRWS,3,'ADVZ_BU_RW')
+IF (LBUDGET_W)  CALL BUDGET (PRWS,NBUDGET_W,'ADVZ_BU_RW')
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/c2r2_adjust.f90 b/src/MNH/c2r2_adjust.f90
index 265452f16..ebbdb572f 100644
--- a/src/MNH/c2r2_adjust.f90
+++ b/src/MNH/c2r2_adjust.f90
@@ -420,12 +420,12 @@ END IF
 !            ----------------------
 !
 !
-IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:) * PRHODJ(:,:,:),6,'COND_BU_RRV')
-IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:) * PRHODJ(:,:,:),7,'COND_BU_RRC')
-IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:) * PRHODJ(:,:,:),4,'COND_BU_RTH')
+IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:) * PRHODJ(:,:,:),NBUDGET_RV,'COND_BU_RRV')
+IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:) * PRHODJ(:,:,:),NBUDGET_RC,'COND_BU_RRC')
+IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:) * PRHODJ(:,:,:),NBUDGET_TH,'COND_BU_RTH')
 IF (LBUDGET_SV) THEN
-  CALL BUDGET (PCNUCS(:,:,:) * PRHODJ(:,:,:),13+(NSV_C2R2BEG-1),'CEVA_BU_RSV') ! RCN
-  CALL BUDGET (PCCS(:,:,:) * PRHODJ(:,:,:),14+(NSV_C2R2BEG-1),'CEVA_BU_RSV') ! RCC
+  CALL BUDGET (PCNUCS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1+(NSV_C2R2BEG-1),  'CEVA_BU_RSV') ! RCN
+  CALL BUDGET (PCCS(:,:,:)   * PRHODJ(:,:,:),NBUDGET_SV1+(NSV_C2R2BEG-1)+1,'CEVA_BU_RSV') ! RCC
 END IF
 !
 !------------------------------------------------------------------------------
diff --git a/src/MNH/ch_monitorn.f90 b/src/MNH/ch_monitorn.f90
index 30ea34766..b81da5894 100644
--- a/src/MNH/ch_monitorn.f90
+++ b/src/MNH/ch_monitorn.f90
@@ -1278,7 +1278,7 @@ END DO
 !
 IF (LBUDGET_SV) THEN
   DO JSV=NSV_CHEMBEG,NSV_CHEMEND
-    CALL BUDGET(XRSVS(:,:,:,JSV),JSV+12,'CHEM_BU_RSV')
+    CALL BUDGET(XRSVS(:,:,:,JSV),NBUDGET_SV1-1+JSV,'CHEM_BU_RSV')
   ENDDO
 ENDIF
 !
diff --git a/src/MNH/drag_veg.f90 b/src/MNH/drag_veg.f90
index ce157a154..e8ece294e 100644
--- a/src/MNH/drag_veg.f90
+++ b/src/MNH/drag_veg.f90
@@ -1,7 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2009-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 !     #######################
        MODULE MODI_DRAG_VEG
 !     #######################
@@ -270,10 +271,10 @@ IF (ODEPOTREE) THEN
 !
 END IF
 !
-IF (LBUDGET_U) CALL BUDGET (PRUS,1,'DRAG_BU_RU')
-IF (LBUDGET_V) CALL BUDGET (PRVS,2,'DRAG_BU_RV')
-IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),7,'DEPOTR_BU_RRC')
-IF (LBUDGET_SV) CALL BUDGET (PSVS(:,:,:,NSV_C2R2BEG+1),14+(NSV_C2R2BEG-1),'DEPOTR_BU_RSV')
+IF (LBUDGET_U) CALL BUDGET (PRUS,NBUDGET_U,'DRAG_BU_RU')
+IF (LBUDGET_V) CALL BUDGET (PRVS,NBUDGET_V,'DRAG_BU_RV')
+IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),NBUDGET_RC,'DEPOTR_BU_RRC')
+IF (LBUDGET_SV) CALL BUDGET (PSVS(:,:,:,NSV_C2R2BEG+1),NBUDGET_SV1+(NSV_C2R2BEG-1)+1,'DEPOTR_BU_RSV')
 !
 !
 !*      3.     Computations of TKE  tendency due to canopy drag
@@ -300,6 +301,6 @@ ZTKES(:,:,:)=  (ZTKET(:,:,:) + (ZCDRAG(:,:,:)* ZDENSITY(:,:,:) &
 !
 PRTKES(:,:,:)=PRTKES(:,:,:)+((ZTKES(:,:,:)-ZTKET(:,:,:))*PRHODJ(:,:,:)/PTSTEP)
 !
-IF (LBUDGET_TKE) CALL BUDGET (PRTKES(:,:,:),5,'DRAG_BU_RTKE')
+IF (LBUDGET_TKE) CALL BUDGET (PRTKES(:,:,:),NBUDGET_TKE,'DRAG_BU_RTKE')
 !
 END SUBROUTINE DRAG_VEG
diff --git a/src/MNH/dyn_sources.f90 b/src/MNH/dyn_sources.f90
index 5bdb5483a..56c6a2010 100644
--- a/src/MNH/dyn_sources.f90
+++ b/src/MNH/dyn_sources.f90
@@ -1,12 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-!-----------------------------------------------------------------
 !     #######################
       MODULE MODI_DYN_SOURCES
 !     #######################
@@ -267,9 +263,9 @@ IF ((.NOT.L1D).AND.(.NOT.LCARTESIAN) )  THEN
 !
 END IF
 !
-IF (LBUDGET_U) CALL BUDGET (PRUS,1,'CURV_BU_RU')
-IF (LBUDGET_V) CALL BUDGET (PRVS,2,'CURV_BU_RV')
-IF (LBUDGET_W) CALL BUDGET (PRWS,3,'CURV_BU_RW')
+IF (LBUDGET_U) CALL BUDGET (PRUS,NBUDGET_U,'CURV_BU_RU')
+IF (LBUDGET_V) CALL BUDGET (PRVS,NBUDGET_V,'CURV_BU_RV')
+IF (LBUDGET_W) CALL BUDGET (PRWS,NBUDGET_W,'CURV_BU_RW')
 !
 !-------------------------------------------------------------------------------
 !
@@ -298,9 +294,9 @@ IF (LCORIO)   THEN
 !
 END IF                      
 !
-IF (LBUDGET_U) CALL BUDGET (PRUS,1,'COR_BU_RU')
-IF (LBUDGET_V) CALL BUDGET (PRVS,2,'COR_BU_RV')
-IF (LBUDGET_W) CALL BUDGET (PRWS,3,'COR_BU_RW')
+IF (LBUDGET_U) CALL BUDGET (PRUS,NBUDGET_U,'COR_BU_RU')
+IF (LBUDGET_V) CALL BUDGET (PRVS,NBUDGET_V,'COR_BU_RV')
+IF (LBUDGET_W) CALL BUDGET (PRWS,NBUDGET_W,'COR_BU_RW')
 !
 !-------------------------------------------------------------------------------
 !
@@ -339,7 +335,7 @@ IF( .NOT.L1D ) THEN
 !
   END IF
 !
-  IF (LBUDGET_TH) CALL BUDGET (PRTHS,4,'PREF_BU_RTH')
+  IF (LBUDGET_TH) CALL BUDGET (PRTHS,NBUDGET_TH,'PREF_BU_RTH')
 !
 END IF
 !
diff --git a/src/MNH/exchange.f90 b/src/MNH/exchange.f90
index b6d8bb8b3..01634dd55 100644
--- a/src/MNH/exchange.f90
+++ b/src/MNH/exchange.f90
@@ -98,7 +98,7 @@ END MODULE MODI_EXCHANGE
 USE MODD_ARGSLIST_ll, ONLY : LIST_ll
 USE MODD_GRID_n
 USE MODD_NSV
-USE MODD_BUDGET,      ONLY : LBUDGET_SV
+USE MODD_BUDGET,      ONLY : LBUDGET_SV, NBUDGET_SV1
 USE MODD_CST,         ONLY : XMNH_TINY
 USE MODD_LUNIT_n,     ONLY : TLUOUT
 USE MODI_SHUMAN
@@ -210,7 +210,7 @@ IF (LUSECHEM) THEN
 !
   IF (LBUDGET_SV) THEN
     DO JSV=NSV_CHEMBEG,NSV_CHEMEND
-      CALL BUDGET(PRSVS(:,:,:,JSV),JSV+12,'NEGA_BU_RSV')
+      CALL BUDGET(PRSVS(:,:,:,JSV),NBUDGET_SV1-1+JSV,'NEGA_BU_RSV')
     ENDDO
   ENDIF
 !
@@ -251,7 +251,7 @@ IF (LUSECHEM) THEN
     END DO
     IF (LBUDGET_SV) THEN
       DO JSV=NSV_AERBEG,NSV_AEREND
-        CALL BUDGET(PRSVS(:,:,:,JSV),JSV+12,'NEGA_BU_RSV')
+        CALL BUDGET(PRSVS(:,:,:,JSV),NBUDGET_SV1-1+JSV,'NEGA_BU_RSV')
       ENDDO
     ENDIF
   ENDIF
diff --git a/src/MNH/fast_terms.f90 b/src/MNH/fast_terms.f90
index eba11a693..23532ed69 100644
--- a/src/MNH/fast_terms.f90
+++ b/src/MNH/fast_terms.f90
@@ -420,9 +420,9 @@ ENDIF
 !            ----------------------
 !
 !
-IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:) * PRHODJ(:,:,:),6,'COND_BU_RRV')
-IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:) * PRHODJ(:,:,:),7,'COND_BU_RRC')
-IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:) * PRHODJ(:,:,:),4,'COND_BU_RTH')
+IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:) * PRHODJ(:,:,:),NBUDGET_RV,'COND_BU_RRV')
+IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:) * PRHODJ(:,:,:),NBUDGET_RC,'COND_BU_RRC')
+IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:) * PRHODJ(:,:,:),NBUDGET_TH,'COND_BU_RTH')
 !
 !------------------------------------------------------------------------------
 !
diff --git a/src/MNH/fct_met.f90 b/src/MNH/fct_met.f90
index 653b238a2..70ca6911e 100644
--- a/src/MNH/fct_met.f90
+++ b/src/MNH/fct_met.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 newsrc 2006/06/06 12:00:47
-!-----------------------------------------------------------------
 !     ######################
       MODULE MODI_FCT_MET
 !     ######################
@@ -168,15 +163,15 @@ IKU=SIZE(XZHAT)
 !
   PRTHS(:,:,:) = PRTHS(:,:,:)                            & 
                 - DXF(PRUCT(:,:,:)*MXM (PTHT(:,:,:)))     
-  IF (LBUDGET_TH) CALL BUDGET (PRTHS,4,'ADVX_BU_RTH')
+  IF (LBUDGET_TH) CALL BUDGET (PRTHS,NBUDGET_TH,'ADVX_BU_RTH')
 !
   PRTHS(:,:,:) = PRTHS(:,:,:)                            &
                 - DYF(PRVCT(:,:,:)*MYM (PTHT(:,:,:)))     
-  IF (LBUDGET_TH) CALL BUDGET (PRTHS,4,'ADVY_BU_RTH')
+  IF (LBUDGET_TH) CALL BUDGET (PRTHS,NBUDGET_TH,'ADVY_BU_RTH')
 !
   PRTHS(:,:,:) = PRTHS(:,:,:)                            &
                 - DZF(1,IKU,1,PRWCT(:,:,:)*MZM (1,IKU,1,PTHT(:,:,:)))     
-  IF (LBUDGET_TH) CALL BUDGET (PRTHS,4,'ADVZ_BU_RTH')
+  IF (LBUDGET_TH) CALL BUDGET (PRTHS,NBUDGET_TH,'ADVZ_BU_RTH')
 !
 !*       1.2 No condensation case: Vapor ---> advected by a FCT scheme
 !
@@ -190,15 +185,15 @@ IKU=SIZE(XZHAT)
 !
     PRRS(:,:,:,1) = PRRS(:,:,:,1) - DXF(ZFX(:,:,:))
     IF (LBUDGET_RV)                          &
-                              CALL BUDGET (PRRS(:,:,:,1),6 ,'ADVX_BU_RRV')
+                              CALL BUDGET (PRRS(:,:,:,1), NBUDGET_RV,'ADVX_BU_RRV')
 !
     PRRS(:,:,:,1) = PRRS(:,:,:,1) - DYF(ZFY(:,:,:))
     IF (LBUDGET_RV)                          & 
-                              CALL BUDGET (PRRS(:,:,:,1),6 ,'ADVY_BU_RRV')
+                              CALL BUDGET (PRRS(:,:,:,1), NBUDGET_RV,'ADVY_BU_RRV')
 !
     PRRS(:,:,:,1) = PRRS(:,:,:,1) - DZF(1,IKU,1,ZFZ(:,:,:))
     IF (LBUDGET_RV)                          &
-                              CALL BUDGET (PRRS(:,:,:,1),6 ,'ADVZ_BU_RRV')
+                              CALL BUDGET (PRRS(:,:,:,1), NBUDGET_RV,'ADVZ_BU_RRV')
   END IF 
 !
 !*       1.3 No ice case:          rv+rc ---> advected by the FCT scheme
@@ -220,18 +215,18 @@ IKU=SIZE(XZHAT)
 !
   PRRS(:,:,:,1) = PRRS(:,:,:,1) - DXF(ZRTFX(:,:,:))
   PRRS(:,:,:,2) = PRRS(:,:,:,2) - DXF(  ZFX(:,:,:)) 
-  IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),6 ,'ADVX_BU_RRV')
-  IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),7 ,'ADVX_BU_RRC')
+  IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1), NBUDGET_RV,'ADVX_BU_RRV')
+  IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2), NBUDGET_RC,'ADVX_BU_RRC')
 !
   PRRS(:,:,:,1) = PRRS(:,:,:,1) - DYF(ZRTFY(:,:,:))
   PRRS(:,:,:,2) = PRRS(:,:,:,2) - DYF(  ZFY(:,:,:))
-  IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),6 ,'ADVY_BU_RRV')
-  IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),7 ,'ADVY_BU_RRC')
+  IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1), NBUDGET_RV,'ADVY_BU_RRV')
+  IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2), NBUDGET_RC,'ADVY_BU_RRC')
 !
   PRRS(:,:,:,1) = PRRS(:,:,:,1) - DZF(1,IKU,1,ZRTFZ(:,:,:))
   PRRS(:,:,:,2) = PRRS(:,:,:,2) - DZF(1,IKU,1,  ZFZ(:,:,:))
-  IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),6 ,'ADVZ_BU_RRV')
-  IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),7 ,'ADVZ_BU_RRC')
+  IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1), NBUDGET_RV,'ADVZ_BU_RRV')
+  IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2), NBUDGET_RC,'ADVZ_BU_RRC')
 !
   END IF
 !
@@ -255,13 +250,13 @@ IKU=SIZE(XZHAT)
   ZRTFZ(:,:,:) = ZRTFZ(:,:,:) - ZFZ(:,:,:)        !
 !
   PRRS(:,:,:,2) = PRRS(:,:,:,2) - DXF(  ZFX(:,:,:))
-  IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),7 ,'ADVX_BU_RRC')
+  IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2), NBUDGET_RC,'ADVX_BU_RRC')
 !
   PRRS(:,:,:,2) = PRRS(:,:,:,2) - DYF(  ZFY(:,:,:))
-  IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),7 ,'ADVY_BU_RRC')
+  IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2), NBUDGET_RC,'ADVY_BU_RRC')
 !
   PRRS(:,:,:,2) = PRRS(:,:,:,2) - DZF(1,IKU,1,  ZFZ(:,:,:))
-  IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),7 ,'ADVZ_BU_RRC')
+  IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2), NBUDGET_RC,'ADVZ_BU_RRC')
 !
 !
   ZFX(:,:,:) = PRUCT(:,:,:) * MXM (PRT(:,:,:,4))    !
@@ -274,18 +269,18 @@ IKU=SIZE(XZHAT)
 !
   PRRS(:,:,:,1) = PRRS(:,:,:,1) - DXF(ZRTFX(:,:,:))
   PRRS(:,:,:,4) = PRRS(:,:,:,4) - DXF(  ZFX(:,:,:)) 
-  IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),6 ,'ADVX_BU_RRV')
-  IF (LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4),9 ,'ADVX_BU_RRI')
+  IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1), NBUDGET_RV,'ADVX_BU_RRV')
+  IF (LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4), NBUDGET_RI,'ADVX_BU_RRI')
 !
   PRRS(:,:,:,1) = PRRS(:,:,:,1) - DYF(ZRTFY(:,:,:))
   PRRS(:,:,:,4) = PRRS(:,:,:,4) - DYF(  ZFY(:,:,:)) 
-  IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),6 ,'ADVY_BU_RRV')
-  IF (LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4),9 ,'ADVY_BU_RRI')
+  IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1), NBUDGET_RV,'ADVY_BU_RRV')
+  IF (LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4), NBUDGET_RI,'ADVY_BU_RRI')
 !
   PRRS(:,:,:,1) = PRRS(:,:,:,1) - DZF(1,IKU,1,ZRTFZ(:,:,:))
   PRRS(:,:,:,4) = PRRS(:,:,:,4) - DZF(1,IKU,1,  ZFZ(:,:,:))
-  IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),6 ,'ADVZ_BU_RRV')
-  IF (LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4),9 ,'ADVZ_BU_RRI')
+  IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1), NBUDGET_RV,'ADVZ_BU_RRV')
+  IF (LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4), NBUDGET_RI,'ADVZ_BU_RRI')
 !
   END IF
 !
@@ -298,13 +293,13 @@ IKU=SIZE(XZHAT)
                       ZFX(:,:,:), ZFY(:,:,:), ZFZ(:,:,:)                 )
 !
   PRRS(:,:,:,3) = PRRS(:,:,:,3) - DXF(  ZFX(:,:,:)) 
-  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,3),8 ,'ADVX_BU_RRR')
+  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,3), NBUDGET_RR,'ADVX_BU_RRR')
 !
   PRRS(:,:,:,3) = PRRS(:,:,:,3) - DYF(  ZFY(:,:,:)) 
-  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,3),8 ,'ADVY_BU_RRR')
+  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,3), NBUDGET_RR,'ADVY_BU_RRR')
 !
   PRRS(:,:,:,3) = PRRS(:,:,:,3) - DZF(1,IKU,1,  ZFZ(:,:,:)) 
-  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,3),8 ,'ADVZ_BU_RRR')
+  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,3), NBUDGET_RR,'ADVZ_BU_RRR')
 !
   END IF
 !
@@ -318,27 +313,27 @@ IKU=SIZE(XZHAT)
 !
     PRRS(:,:,:,JRR) = PRRS(:,:,:,JRR) - DXF(ZFX(:,:,:)) 
     IF (JRR==5.AND.LBUDGET_RS) &
-                                    CALL BUDGET (PRRS(:,:,:,5),10,'ADVX_BU_RRS')
+                                    CALL BUDGET (PRRS(:,:,:,5),NBUDGET_RS,'ADVX_BU_RRS')
     IF (JRR==6.AND.LBUDGET_RG) &
-                                    CALL BUDGET (PRRS(:,:,:,6),11,'ADVX_BU_RRG')
+                                    CALL BUDGET (PRRS(:,:,:,6),NBUDGET_RG,'ADVX_BU_RRG')
     IF (JRR==7.AND.LBUDGET_RH) &
-                                    CALL BUDGET (PRRS(:,:,:,7),12,'ADVX_BU_RRH')
+                                    CALL BUDGET (PRRS(:,:,:,7),NBUDGET_RH,'ADVX_BU_RRH')
 !
     PRRS(:,:,:,JRR) = PRRS(:,:,:,JRR) - DYF(ZFY(:,:,:))
     IF (JRR==5.AND.LBUDGET_RS) &
-                                    CALL BUDGET (PRRS(:,:,:,5),10,'ADVY_BU_RRS')
+                                    CALL BUDGET (PRRS(:,:,:,5),NBUDGET_RS,'ADVY_BU_RRS')
     IF (JRR==6.AND.LBUDGET_RG) &
-                                    CALL BUDGET (PRRS(:,:,:,6),11,'ADVY_BU_RRG')
+                                    CALL BUDGET (PRRS(:,:,:,6),NBUDGET_RG,'ADVY_BU_RRG')
     IF (JRR==7.AND.LBUDGET_RH) &
-                                    CALL BUDGET (PRRS(:,:,:,7),12,'ADVY_BU_RRH')
+                                    CALL BUDGET (PRRS(:,:,:,7),NBUDGET_RH,'ADVY_BU_RRH')
 !
     PRRS(:,:,:,JRR) = PRRS(:,:,:,JRR) - DZF(1,IKU,1,ZFZ(:,:,:))
     IF (JRR==5.AND.LBUDGET_RS) &
-                                    CALL BUDGET (PRRS(:,:,:,5),10,'ADVZ_BU_RRS')
+                                    CALL BUDGET (PRRS(:,:,:,5),NBUDGET_RS,'ADVZ_BU_RRS')
     IF (JRR==6.AND.LBUDGET_RG) &
-                                    CALL BUDGET (PRRS(:,:,:,6),11,'ADVZ_BU_RRG')
+                                    CALL BUDGET (PRRS(:,:,:,6),NBUDGET_RG,'ADVZ_BU_RRG')
     IF (JRR==7.AND.LBUDGET_RH) &
-                                    CALL BUDGET (PRRS(:,:,:,7),12,'ADVZ_BU_RRH')
+                                    CALL BUDGET (PRRS(:,:,:,7),NBUDGET_RH,'ADVZ_BU_RRH')
 !
   END DO
 !
@@ -354,13 +349,13 @@ IKU=SIZE(XZHAT)
                          ZFX(:,:,:), ZFY(:,:,:), ZFZ(:,:,:)      )
 !
     PRTKES(:,:,:) = PRTKES(:,:,:) - DXF(ZFX(:,:,:))     
-    IF (LBUDGET_TKE) CALL BUDGET (PRTKES,5,'ADVX_BU_RTKE')
+    IF (LBUDGET_TKE) CALL BUDGET (PRTKES,NBUDGET_TKE,'ADVX_BU_RTKE')
 !
     PRTKES(:,:,:) = PRTKES(:,:,:) - DYF(ZFY(:,:,:))   
-    IF (LBUDGET_TKE) CALL BUDGET (PRTKES,5,'ADVY_BU_RTKE')
+    IF (LBUDGET_TKE) CALL BUDGET (PRTKES,NBUDGET_TKE,'ADVY_BU_RTKE')
 !
     PRTKES(:,:,:) = PRTKES(:,:,:) - DZF(1,IKU,1,ZFZ(:,:,:)) 
-    IF (LBUDGET_TKE) CALL BUDGET (PRTKES,5,'ADVZ_BU_RTKE')
+    IF (LBUDGET_TKE) CALL BUDGET (PRTKES,NBUDGET_TKE,'ADVZ_BU_RTKE')
 !
   END IF
 !
diff --git a/src/MNH/fct_scalar.f90 b/src/MNH/fct_scalar.f90
index 75df10804..9af746bb5 100644
--- a/src/MNH/fct_scalar.f90
+++ b/src/MNH/fct_scalar.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 adiab 2006/06/06 12:01:31
-!-----------------------------------------------------------------
 !     ######################
       MODULE MODI_FCT_SCALAR
 !     ######################
@@ -157,15 +152,15 @@ IKU=SIZE(XZHAT)
 !
     PRSVS(:,:,:,JSV) = PRSVS(:,:,:,JSV) - DXF(ZFX(:,:,:))        
     IF (LBUDGET_SV)                               &
-                            CALL BUDGET (PRSVS(:,:,:,JSV),JSV+12,'ADVX_BU_RSV')
+                            CALL BUDGET (PRSVS(:,:,:,JSV),NBUDGET_SV1-1+JSV,'ADVX_BU_RSV')
 !
     PRSVS(:,:,:,JSV) = PRSVS(:,:,:,JSV) - DYF(ZFY(:,:,:))        
     IF (LBUDGET_SV)                               &
-                            CALL BUDGET (PRSVS(:,:,:,JSV),JSV+12,'ADVY_BU_RSV')
+                            CALL BUDGET (PRSVS(:,:,:,JSV),NBUDGET_SV1-1+JSV,'ADVY_BU_RSV')
 !
     PRSVS(:,:,:,JSV) = PRSVS(:,:,:,JSV) - DZF(1,IKU,1,ZFZ(:,:,:)) 
     IF (LBUDGET_SV)                               &
-                            CALL BUDGET (PRSVS(:,:,:,JSV),JSV+12,'ADVZ_BU_RSV')
+                            CALL BUDGET (PRSVS(:,:,:,JSV),NBUDGET_SV1-1+JSV,'ADVZ_BU_RSV')
   END DO
 !
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/forcing.f90 b/src/MNH/forcing.f90
index e2cecf24f..fbf7f239a 100644
--- a/src/MNH/forcing.f90
+++ b/src/MNH/forcing.f90
@@ -827,21 +827,21 @@ END IF
 !   	        ------------
 !
 !
-IF (LBUDGET_U)   CALL BUDGET (PRUS,1,'FRC_BU_RU')
-IF (LBUDGET_V)   CALL BUDGET (PRVS,2,'FRC_BU_RV')
-IF (LBUDGET_W)   CALL BUDGET (PRWS,3,'FRC_BU_RW')
-IF (LBUDGET_TH)  CALL BUDGET (PRTHS,4,'FRC_BU_RTH')
-IF (LBUDGET_TKE) CALL BUDGET (PRTKES,5,'FRC_BU_RTKE')
-IF (LBUDGET_RV)  CALL BUDGET (PRRS(:,:,:,1),6,'FRC_BU_RRV')
-IF (LBUDGET_RC)  CALL BUDGET (PRRS(:,:,:,2),7,'FRC_BU_RRC')
-IF (LBUDGET_RR)  CALL BUDGET (PRRS(:,:,:,3),8,'FRC_BU_RRR')
-IF (LBUDGET_RI)  CALL BUDGET (PRRS(:,:,:,4),9,'FRC_BU_RRI')
-IF (LBUDGET_RS)  CALL BUDGET (PRRS(:,:,:,5),10,'FRC_BU_RRS')
-IF (LBUDGET_RG)  CALL BUDGET (PRRS(:,:,:,6),11,'FRC_BU_RRG')
-IF (LBUDGET_RH)  CALL BUDGET (PRRS(:,:,:,7),12,'FRC_BU_RRH')
+IF (LBUDGET_U)   CALL BUDGET (PRUS,         NBUDGET_U,  'FRC_BU_RU')
+IF (LBUDGET_V)   CALL BUDGET (PRVS,         NBUDGET_V,  'FRC_BU_RV')
+IF (LBUDGET_W)   CALL BUDGET (PRWS,         NBUDGET_W,  'FRC_BU_RW')
+IF (LBUDGET_TH)  CALL BUDGET (PRTHS,        NBUDGET_TH, 'FRC_BU_RTH')
+IF (LBUDGET_TKE) CALL BUDGET (PRTKES,       NBUDGET_TKE,'FRC_BU_RTKE')
+IF (LBUDGET_RV)  CALL BUDGET (PRRS(:,:,:,1),NBUDGET_RV, 'FRC_BU_RRV')
+IF (LBUDGET_RC)  CALL BUDGET (PRRS(:,:,:,2),NBUDGET_RC, 'FRC_BU_RRC')
+IF (LBUDGET_RR)  CALL BUDGET (PRRS(:,:,:,3),NBUDGET_RR, 'FRC_BU_RRR')
+IF (LBUDGET_RI)  CALL BUDGET (PRRS(:,:,:,4),NBUDGET_RI, 'FRC_BU_RRI')
+IF (LBUDGET_RS)  CALL BUDGET (PRRS(:,:,:,5),NBUDGET_RS, 'FRC_BU_RRS')
+IF (LBUDGET_RG)  CALL BUDGET (PRRS(:,:,:,6),NBUDGET_RG, 'FRC_BU_RRG')
+IF (LBUDGET_RH)  CALL BUDGET (PRRS(:,:,:,7),NBUDGET_RH, 'FRC_BU_RRH')
 IF (LBUDGET_SV) THEN
   DO JL = 1 , SIZE(PRSVS,4)
-    CALL BUDGET (PRSVS(:,:,:,JL),JL+12,'FRC_BU_RSV')
+    CALL BUDGET (PRSVS(:,:,:,JL),JL+NBUDGET_SV1-1,'FRC_BU_RSV')
   END DO
 END IF
 !
diff --git a/src/MNH/gravity_impl.f90 b/src/MNH/gravity_impl.f90
index 19241d022..8c623c54a 100644
--- a/src/MNH/gravity_impl.f90
+++ b/src/MNH/gravity_impl.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2011-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
 !     #####################
@@ -147,7 +147,7 @@ CALL GRAVITY ( KRR,KRRL, KRRI, ZTH, ZR, PRHODJ, PTHVREF, ZRWS_GRAV(:,:,:) )
 !
 PRWS(:,:,:) = PRWS(:,:,:) + ZRWS_GRAV(:,:,:)
 !
-IF (LBUDGET_W) CALL BUDGET (PRWS,3,'GRAV_BU_RW')
+IF (LBUDGET_W) CALL BUDGET (PRWS,NBUDGET_W,'GRAV_BU_RW')
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/ice_adjust.f90 b/src/MNH/ice_adjust.f90
index d89d7227f..0beb2e0ea 100644
--- a/src/MNH/ice_adjust.f90
+++ b/src/MNH/ice_adjust.f90
@@ -430,10 +430,10 @@ ENDIF
 !*       6.  STORE THE BUDGET TERMS
 !            ----------------------
 !
-IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:) * PRHODJ(:,:,:),6,HBUNAME//'_BU_RRV')
-IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:) * PRHODJ(:,:,:),7,HBUNAME//'_BU_RRC')
-IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:) * PRHODJ(:,:,:),9,HBUNAME//'_BU_RRI')
-IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:) * PRHODJ(:,:,:),4,HBUNAME//'_BU_RTH')
+IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:) * PRHODJ(:,:,:),NBUDGET_RV,HBUNAME//'_BU_RRV')
+IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:) * PRHODJ(:,:,:),NBUDGET_RC,HBUNAME//'_BU_RRC')
+IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:) * PRHODJ(:,:,:),NBUDGET_RI,HBUNAME//'_BU_RRI')
+IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:) * PRHODJ(:,:,:),NBUDGET_TH,HBUNAME//'_BU_RTH')
 !
 !------------------------------------------------------------------------------
 !
diff --git a/src/MNH/ice_adjust_elec.f90 b/src/MNH/ice_adjust_elec.f90
index 8d802babf..4114d7a2e 100644
--- a/src/MNH/ice_adjust_elec.f90
+++ b/src/MNH/ice_adjust_elec.f90
@@ -625,15 +625,15 @@ ENDIF
 !*       6.  STORE THE BUDGET TERMS
 !            ----------------------
 !
-IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:) * PRHODJ(:,:,:),6,'DEPI_BU_RRV')
-IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:) * PRHODJ(:,:,:),7,'DEPI_BU_RRC')
-IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:) * PRHODJ(:,:,:),9,'DEPI_BU_RRI')
-IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:) * PRHODJ(:,:,:),4,'DEPI_BU_RTH')
+IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:) * PRHODJ(:,:,:),NBUDGET_RV,'DEPI_BU_RRV')
+IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:) * PRHODJ(:,:,:),NBUDGET_RC,'DEPI_BU_RRC')
+IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:) * PRHODJ(:,:,:),NBUDGET_RI,'DEPI_BU_RRI')
+IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:) * PRHODJ(:,:,:),NBUDGET_TH,'DEPI_BU_RTH')
 IF (LBUDGET_SV) THEN
-  CALL BUDGET(PQPIS(:,:,:) * PRHODJ(:,:,:), 12+NSV_ELECBEG, 'DEPI_BU_RSV')
-  CALL BUDGET(PQNIS(:,:,:) * PRHODJ(:,:,:), 12+NSV_ELECEND, 'DEPI_BU_RSV')
-  CALL BUDGET(PQCS(:,:,:) * PRHODJ(:,:,:), 12+NSV_ELECBEG+1, 'DEPI_BU_RSV')
-  CALL BUDGET(PQIS(:,:,:) * PRHODJ(:,:,:), 12+NSV_ELECBEG+3, 'DEPI_BU_RSV')
+  CALL BUDGET(PQPIS(:,:,:) * PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_ELECBEG,   'DEPI_BU_RSV')
+  CALL BUDGET(PQNIS(:,:,:) * PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_ELECEND,   'DEPI_BU_RSV')
+  CALL BUDGET(PQCS(:,:,:)  * PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_ELECBEG+1, 'DEPI_BU_RSV')
+  CALL BUDGET(PQIS(:,:,:)  * PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_ELECBEG+3, 'DEPI_BU_RSV')
 END IF
 !
 !------------------------------------------------------------------------------
diff --git a/src/MNH/ion_attach_elec.f90 b/src/MNH/ion_attach_elec.f90
index bfecbd9a1..be198dae2 100644
--- a/src/MNH/ion_attach_elec.f90
+++ b/src/MNH/ion_attach_elec.f90
@@ -91,7 +91,7 @@ USE MODD_ELEC_PARAM
 USE MODD_RAIN_ICE_DESCR
 USE MODD_RAIN_ICE_PARAM
 USE MODD_NSV, ONLY : NSV_ELECBEG, NSV_ELEC
-USE MODD_BUDGET, ONLY : LBU_RSV
+USE MODD_BUDGET, ONLY : LBU_RSV, NBUDGET_SV1
 USE MODD_REF,    ONLY : XTHVREFZ
 
 use mode_tools_ll,        only: GET_INDICE_ll
@@ -263,7 +263,7 @@ ENDDO
 !
 IF (LBU_RSV) THEN
   DO JRR = 1, NSV_ELEC
-    CALL BUDGET(PSVS(:,:,:,JRR), 11+NSV_ELECBEG+JRR, 'NEUT_BU_RSV')
+    CALL BUDGET(PSVS(:,:,:,JRR), NBUDGET_SV1-1+NSV_ELECBEG+JRR-1, 'NEUT_BU_RSV')
   ENDDO
 END IF
 !
diff --git a/src/MNH/khko_notadjust.f90 b/src/MNH/khko_notadjust.f90
index 806c6c965..533ed78e7 100644
--- a/src/MNH/khko_notadjust.f90
+++ b/src/MNH/khko_notadjust.f90
@@ -412,12 +412,12 @@ END IF
 !            ----------------------
 !
 !
-IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:) * PRHODJ(:,:,:),6,'COND_BU_RRV')
-IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:) * PRHODJ(:,:,:),7,'COND_BU_RRC')
-IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:) * PRHODJ(:,:,:),4,'COND_BU_RTH')
+IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:) * PRHODJ(:,:,:),NBUDGET_RV,'COND_BU_RRV')
+IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:) * PRHODJ(:,:,:),NBUDGET_RC,'COND_BU_RRC')
+IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:) * PRHODJ(:,:,:),NBUDGET_TH,'COND_BU_RTH')
 IF (LBUDGET_SV) THEN
-  CALL BUDGET (PCNUCS(:,:,:) * PRHODJ(:,:,:),13+(NSV_C2R2BEG-1),'CEVA_BU_RSV') ! RCN
-  CALL BUDGET (PCCS(:,:,:) * PRHODJ(:,:,:),14+(NSV_C2R2BEG-1),'CEVA_BU_RSV') ! RCC
+  CALL BUDGET (PCNUCS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_C2R2BEG,  'CEVA_BU_RSV') ! RCN
+  CALL BUDGET (PCCS(:,:,:) * PRHODJ(:,:,:),  NBUDGET_SV1-1+NSV_C2R2BEG+1,'CEVA_BU_RSV') ! RCC
 END IF
 !
 END SUBROUTINE KHKO_NOTADJUST
diff --git a/src/MNH/les_budget.f90 b/src/MNH/les_budget.f90
index c11a00da0..5984be32b 100644
--- a/src/MNH/les_budget.f90
+++ b/src/MNH/les_budget.f90
@@ -53,12 +53,13 @@ END MODULE MODI_LES_BUDGET
 !*       0.   DECLARATIONS
 !             ------------
 !
+use modd_budget,      only: NBUDGET_U, NBUDGET_V, NBUDGET_W, NBUDGET_TH, NBUDGET_TKE, &
+                            NBUDGET_RV, NBUDGET_RC, NBUDGET_RR, NBUDGET_RI, NBUDGET_RS, NBUDGET_RG, NBUDGET_RH, NBUDGET_SV1
 USE MODD_LES
 USE MODD_LES_BUDGET
 USE MODD_NSV
 !
 USE MODI_SHUMAN
-USE MODI_THL_RT_FROM_TH_R
 USE MODI_LES_VER_INT
 USE MODI_LES_MEAN_ll
 !
@@ -122,7 +123,7 @@ SELECT CASE (KBUDN)
 !
 !* u
 !
-  CASE(1)
+  CASE( NBUDGET_U )
     CALL LES_BUDGET_ANOMALY(PVARS,'X',ZANOM)
     !
     !* action in KE budget
@@ -136,7 +137,7 @@ SELECT CASE (KBUDN)
 !
 !* v
 !
-  CASE(2)
+  CASE( NBUDGET_V )
     CALL LES_BUDGET_ANOMALY(PVARS,'Y',ZANOM)
     !
     !* action in KE budget
@@ -150,7 +151,7 @@ SELECT CASE (KBUDN)
 !
 !* w
 !
-  CASE(3)
+  CASE( NBUDGET_W )
     CALL LES_BUDGET_ANOMALY(PVARS,'Z',ZANOM)
     !
     !* action in KE budget
@@ -183,7 +184,7 @@ SELECT CASE (KBUDN)
 !
 !* Th
 !
-  CASE(4)
+  CASE( NBUDGET_TH )
     XCURRENT_RTHLS = XCURRENT_RTHLS + PVARS - XCURRENT_RTHS
     CALL LES_BUDGET_ANOMALY(XCURRENT_RTHLS,'-',ZANOM)
     !
@@ -211,7 +212,7 @@ SELECT CASE (KBUDN)
 !
 !* Tke
 !
-  CASE(5)
+  CASE( NBUDGET_TKE )
     ALLOCATE(ZTEND(IIU,IJU,IKU))
     ZTEND(:,:,:) = (PVARS(:,:,:)-XCURRENT_RTKES(:,:,:)) / XCURRENT_RHODJ
     XCURRENT_RTKES = PVARS
@@ -222,7 +223,7 @@ SELECT CASE (KBUDN)
 !
 !* Rv, Rr, Ri, Rs, Rg, Rh
 !
-  CASE(6,8,9,10,11,12)
+  CASE( NBUDGET_RV, NBUDGET_RR, NBUDGET_RI, NBUDGET_RS, NBUDGET_RG, NBUDGET_RH )
     !* transformation into conservative variables: RT
     XCURRENT_RRTS = XCURRENT_RRTS + PVARS(:,:,:) - XCURRENT_RRS(:,:,:,KBUDN-5)
     CALL LES_BUDGET_ANOMALY(XCURRENT_RRTS,'-',ZANOM)
@@ -249,7 +250,7 @@ SELECT CASE (KBUDN)
 !
 !* Rc
 !
-  CASE(7)
+  CASE( NBUDGET_RC )
     !* transformation into conservative variables: theta_l; RT
     XCURRENT_RRTS  = XCURRENT_RRTS  + PVARS(:,:,:) - XCURRENT_RRS(:,:,:,KBUDN-5)
     XCURRENT_RTHLS = XCURRENT_RTHLS - XCURRENT_L_O_EXN_CP &
@@ -298,7 +299,7 @@ SELECT CASE (KBUDN)
 !
 !* SV
 !
-  CASE(13:)
+  CASE( NBUDGET_SV1: )
     CALL LES_BUDGET_ANOMALY(PVARS,'-',ZANOM)
     !
     !* action in WSV budget
diff --git a/src/MNH/lima.f90 b/src/MNH/lima.f90
index 851660cf9..2711c496a 100644
--- a/src/MNH/lima.f90
+++ b/src/MNH/lima.f90
@@ -102,7 +102,9 @@ END MODULE MODI_LIMA
 !*       0.    DECLARATIONS
 !              ------------
 USE MODD_BUDGET,          ONLY: LBU_ENABLE, LBUDGET_TH, LBUDGET_RV, LBUDGET_RC, LBUDGET_RR,     &
-                                LBUDGET_RI, LBUDGET_RS, LBUDGET_RG, LBUDGET_RH, LBUDGET_SV
+                                LBUDGET_RI, LBUDGET_RS, LBUDGET_RG, LBUDGET_RH, LBUDGET_SV,     &
+                                NBUDGET_TH, NBUDGET_RV, NBUDGET_RC, NBUDGET_RR, NBUDGET_RI,     &
+                                NBUDGET_RS, NBUDGET_RG, NBUDGET_RH, NBUDGET_SV1
 USE MODD_CLOUDPAR_n,      ONLY: NSPLITR, NSPLITG
 USE MODD_CST,             ONLY: XCI, XCL, XCPD, XCPV, XLSTT, XLVTT, XTT, XRHOLW, XP00, XRD
 USE MODD_IO,              ONLY: TFILEDATA
@@ -560,14 +562,14 @@ IF (LCOLD .AND. LSNOW) THEN
 END IF
 !
 IF(LBU_ENABLE) THEN
-  IF (LBUDGET_RC .AND. LWARM .AND. LRAIN) CALL BUDGET (ZRCS(:,:,:)*PRHODJ(:,:,:), 7  , 'CORR_BU_RRC')
-  IF (LBUDGET_RR .AND. LWARM .AND. LRAIN) CALL BUDGET (ZRRS(:,:,:)*PRHODJ(:,:,:), 8  , 'CORR_BU_RRR')
-  IF (LBUDGET_RI .AND. LCOLD .AND. LSNOW) CALL BUDGET (ZRIS(:,:,:)*PRHODJ(:,:,:), 9  , 'CORR_BU_RRI')
-  IF (LBUDGET_RI .AND. LCOLD .AND. LSNOW) CALL BUDGET (ZRSS(:,:,:)*PRHODJ(:,:,:),10  , 'CORR_BU_RRS')
+  IF (LBUDGET_RC .AND. LWARM .AND. LRAIN) CALL BUDGET (ZRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC, 'CORR_BU_RRC')
+  IF (LBUDGET_RR .AND. LWARM .AND. LRAIN) CALL BUDGET (ZRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR, 'CORR_BU_RRR')
+  IF (LBUDGET_RI .AND. LCOLD .AND. LSNOW) CALL BUDGET (ZRIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RI, 'CORR_BU_RRI')
+  IF (LBUDGET_RI .AND. LCOLD .AND. LSNOW) CALL BUDGET (ZRSS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RS, 'CORR_BU_RRS')
   IF (LBUDGET_SV) THEN
-     IF (LWARM .AND. LRAIN) CALL BUDGET (ZCCS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NC  , 'CORR_BU_RSV')
-     IF (LWARM .AND. LRAIN) CALL BUDGET (ZCRS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NR  , 'CORR_BU_RSV')
-     IF (LCOLD .AND. LSNOW) CALL BUDGET (ZCIS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NI  , 'CORR_BU_RSV')
+     IF (LWARM .AND. LRAIN) CALL BUDGET (ZCCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NC, 'CORR_BU_RSV')
+     IF (LWARM .AND. LRAIN) CALL BUDGET (ZCRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NR, 'CORR_BU_RSV')
+     IF (LCOLD .AND. LSNOW) CALL BUDGET (ZCIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NI, 'CORR_BU_RSV')
   END IF
 END IF
 !-------------------------------------------------------------------------------
@@ -606,17 +608,17 @@ ZTHS(:,:,:) = ZT(:,:,:) / ZEXN(:,:,:) * ZINV_TSTEP
 ! Call budgets
 !
 IF(LBU_ENABLE) THEN
-  IF (LBUDGET_TH)                         CALL BUDGET (ZTHS(:,:,:)*PRHODJ(:,:,:), 4  , 'SEDI_BU_RTH')
-  IF (LBUDGET_RC .AND. LWARM .AND. LSEDC) CALL BUDGET (ZRCS(:,:,:)*PRHODJ(:,:,:), 7  , 'SEDI_BU_RRC')
-  IF (LBUDGET_RR .AND. LWARM .AND. LRAIN) CALL BUDGET (ZRRS(:,:,:)*PRHODJ(:,:,:), 8  , 'SEDI_BU_RRR')
-  IF (LBUDGET_RI .AND. LCOLD .AND. LSEDI) CALL BUDGET (ZRIS(:,:,:)*PRHODJ(:,:,:), 9  , 'SEDI_BU_RRI')
-  IF (LBUDGET_RS .AND. LCOLD .AND. LSNOW) CALL BUDGET (ZRSS(:,:,:)*PRHODJ(:,:,:), 10 , 'SEDI_BU_RRS')
-  IF (LBUDGET_RG .AND. LCOLD .AND. LSNOW) CALL BUDGET (ZRGS(:,:,:)*PRHODJ(:,:,:), 11 , 'SEDI_BU_RRG')
-  IF (LBUDGET_RH .AND. LCOLD .AND. LHAIL) CALL BUDGET (ZRHS(:,:,:)*PRHODJ(:,:,:), 12 , 'SEDI_BU_RRH')
+  IF (LBUDGET_TH)                         CALL BUDGET (ZTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH, 'SEDI_BU_RTH')
+  IF (LBUDGET_RC .AND. LWARM .AND. LSEDC) CALL BUDGET (ZRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC, 'SEDI_BU_RRC')
+  IF (LBUDGET_RR .AND. LWARM .AND. LRAIN) CALL BUDGET (ZRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR, 'SEDI_BU_RRR')
+  IF (LBUDGET_RI .AND. LCOLD .AND. LSEDI) CALL BUDGET (ZRIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RI, 'SEDI_BU_RRI')
+  IF (LBUDGET_RS .AND. LCOLD .AND. LSNOW) CALL BUDGET (ZRSS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RS, 'SEDI_BU_RRS')
+  IF (LBUDGET_RG .AND. LCOLD .AND. LSNOW) CALL BUDGET (ZRGS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RG, 'SEDI_BU_RRG')
+  IF (LBUDGET_RH .AND. LCOLD .AND. LHAIL) CALL BUDGET (ZRHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RH, 'SEDI_BU_RRH')
   IF (LBUDGET_SV) THEN
-     IF (LWARM .AND. LSEDC) CALL BUDGET (ZCCS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NC  , 'SEDI_BU_RSV')
-     IF (LWARM .AND. LRAIN) CALL BUDGET (ZCRS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NR  , 'SEDI_BU_RSV')
-     IF (LCOLD .AND. LSEDI) CALL BUDGET (ZCIS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NI  , 'SEDI_BU_RSV')
+     IF (LWARM .AND. LSEDC) CALL BUDGET (ZCCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NC, 'SEDI_BU_RSV')
+     IF (LWARM .AND. LRAIN) CALL BUDGET (ZCRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NR, 'SEDI_BU_RSV')
+     IF (LCOLD .AND. LSEDI) CALL BUDGET (ZCIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NI, 'SEDI_BU_RSV')
   END IF
 END IF
 !
@@ -633,8 +635,8 @@ IF (LWARM .AND. LDEPOC) THEN
      PINDEP(:,:) = XVDEPOC * ZRCT(:,:,IKB) *  PRHODREF(:,:,IKB) /XRHOLW
   END WHERE
 !
-  IF ( LBUDGET_RC ) CALL BUDGET (ZRCS(:,:,:)*PRHODJ(:,:,:),7             ,'DEPO_BU_RRC')
-  IF ( LBUDGET_SV ) CALL BUDGET (ZCCS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NC,'DEPO_BU_RSV') 
+  IF ( LBUDGET_RC ) CALL BUDGET (ZRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC,                'DEPO_BU_RRC')
+  IF ( LBUDGET_SV ) CALL BUDGET (ZCCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NC, 'DEPO_BU_RSV')
 END IF
 !
 !
@@ -650,11 +652,11 @@ IF (LWARM .AND. LRAIN) THEN
    ZCRS(:,:,:) = ZCRS(:,:,:) + Z_CR_CVRC(:,:,:)/PTSTEP
    !
    IF(LBU_ENABLE) THEN
-      IF (LBUDGET_RC) CALL BUDGET (ZRCS(:,:,:)*PRHODJ(:,:,:), 7  , 'R2C1_BU_RRC')
-      IF (LBUDGET_RR) CALL BUDGET (ZRRS(:,:,:)*PRHODJ(:,:,:), 8  , 'R2C1_BU_RRR')
+      IF (LBUDGET_RC) CALL BUDGET (ZRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC, 'R2C1_BU_RRC')
+      IF (LBUDGET_RR) CALL BUDGET (ZRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR, 'R2C1_BU_RRR')
       IF (LBUDGET_SV) THEN
-         CALL BUDGET (ZCCS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NC  , 'R2C1_BU_RSV')
-         CALL BUDGET (ZCRS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NR  , 'R2C1_BU_RSV')
+         CALL BUDGET (ZCCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NC  , 'R2C1_BU_RSV')
+         CALL BUDGET (ZCRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NR  , 'R2C1_BU_RSV')
       END IF
    END IF
 END IF
@@ -1476,163 +1478,163 @@ IF ( LCOLD .AND. LHHONI) PSVS(:,:,:,NSV_LIMA_HOM_HAZE) = ZHOMFT(:,:,:) *ZINV_TST
 IF(LBU_ENABLE) THEN
    IF (LBUDGET_TH) THEN
       ZTHS(:,:,:) = ZTHS(:,:,:) + ZTOT_TH_EVAP(:,:,:)/PTSTEP
-      CALL BUDGET (ZTHS(:,:,:)*PRHODJ(:,:,:), 4  , 'REVA_BU_RTH')
+      CALL BUDGET (ZTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH, 'REVA_BU_RTH')
       ZTHS(:,:,:) = ZTHS(:,:,:) + ZTOT_TH_HONC(:,:,:)/PTSTEP
-      CALL BUDGET (ZTHS(:,:,:)*PRHODJ(:,:,:), 4  , 'HONC_BU_RTH')
+      CALL BUDGET (ZTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH, 'HONC_BU_RTH')
       ZTHS(:,:,:) = ZTHS(:,:,:) + ZTOT_TH_HONR(:,:,:)/PTSTEP
-      CALL BUDGET (ZTHS(:,:,:)*PRHODJ(:,:,:), 4  , 'HONR_BU_RTH')
+      CALL BUDGET (ZTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH, 'HONR_BU_RTH')
       ZTHS(:,:,:) = ZTHS(:,:,:) + ZTOT_TH_DEPS(:,:,:)/PTSTEP
-      CALL BUDGET (ZTHS(:,:,:)*PRHODJ(:,:,:), 4  , 'DEPS_BU_RTH')
+      CALL BUDGET (ZTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH, 'DEPS_BU_RTH')
       ZTHS(:,:,:) = ZTHS(:,:,:) + ZTOT_TH_DEPG(:,:,:)/PTSTEP
-      CALL BUDGET (ZTHS(:,:,:)*PRHODJ(:,:,:), 4  , 'DEPG_BU_RTH')
+      CALL BUDGET (ZTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH, 'DEPG_BU_RTH')
       ZTHS(:,:,:) = ZTHS(:,:,:) + ZTOT_TH_IMLT(:,:,:)/PTSTEP
-      CALL BUDGET (ZTHS(:,:,:)*PRHODJ(:,:,:), 4  , 'IMLT_BU_RTH')
+      CALL BUDGET (ZTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH, 'IMLT_BU_RTH')
       ZTHS(:,:,:) = ZTHS(:,:,:) + ZTOT_TH_BERFI(:,:,:)/PTSTEP
-      CALL BUDGET (ZTHS(:,:,:)*PRHODJ(:,:,:), 4  , 'BERFI_BU_RTH')
+      CALL BUDGET (ZTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH, 'BERFI_BU_RTH')
       ZTHS(:,:,:) = ZTHS(:,:,:) + ZTOT_TH_RIM(:,:,:)/PTSTEP
-      CALL BUDGET (ZTHS(:,:,:)*PRHODJ(:,:,:), 4  , 'RIM_BU_RTH')
+      CALL BUDGET (ZTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH, 'RIM_BU_RTH')
       ZTHS(:,:,:) = ZTHS(:,:,:) + ZTOT_TH_ACC(:,:,:)/PTSTEP
-      CALL BUDGET (ZTHS(:,:,:)*PRHODJ(:,:,:), 4  , 'ACC_BU_RTH')
+      CALL BUDGET (ZTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH, 'ACC_BU_RTH')
       ZTHS(:,:,:) = ZTHS(:,:,:) + ZTOT_TH_CFRZ(:,:,:)/PTSTEP
-      CALL BUDGET (ZTHS(:,:,:)*PRHODJ(:,:,:), 4  , 'CFRZ_BU_RTH')
+      CALL BUDGET (ZTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH, 'CFRZ_BU_RTH')
       ZTHS(:,:,:) = ZTHS(:,:,:) + ZTOT_TH_WETG(:,:,:)/PTSTEP
-      CALL BUDGET (ZTHS(:,:,:)*PRHODJ(:,:,:), 4  , 'WETG_BU_RTH')
+      CALL BUDGET (ZTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH, 'WETG_BU_RTH')
       ZTHS(:,:,:) = ZTHS(:,:,:) + ZTOT_TH_DRYG(:,:,:)/PTSTEP
-      CALL BUDGET (ZTHS(:,:,:)*PRHODJ(:,:,:), 4  , 'DRYG_BU_RTH')
+      CALL BUDGET (ZTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH, 'DRYG_BU_RTH')
       ZTHS(:,:,:) = ZTHS(:,:,:) + ZTOT_TH_GMLT(:,:,:)/PTSTEP
-      CALL BUDGET (ZTHS(:,:,:)*PRHODJ(:,:,:), 4  , 'GMLT_BU_RTH')
+      CALL BUDGET (ZTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH, 'GMLT_BU_RTH')
    END IF
 
    IF (LBUDGET_RV) THEN
       ZRVS(:,:,:) = ZRVS(:,:,:) - ZTOT_RR_EVAP(:,:,:)/PTSTEP
-      CALL BUDGET (ZRVS(:,:,:)*PRHODJ(:,:,:), 6  , 'REVA_BU_RRV')
+      CALL BUDGET (ZRVS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RV, 'REVA_BU_RRV')
       ZRVS(:,:,:) = ZRVS(:,:,:) - ZTOT_RS_DEPS(:,:,:)/PTSTEP
-      CALL BUDGET (ZRVS(:,:,:)*PRHODJ(:,:,:), 6  , 'DEPS_BU_RRV')
+      CALL BUDGET (ZRVS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RV, 'DEPS_BU_RRV')
       ZRVS(:,:,:) = ZRVS(:,:,:) - ZTOT_RG_DEPG(:,:,:)/PTSTEP
-      CALL BUDGET (ZRVS(:,:,:)*PRHODJ(:,:,:), 6  , 'DEPG_BU_RRV')
+      CALL BUDGET (ZRVS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RV, 'DEPG_BU_RRV')
    END IF
 
    IF (LBUDGET_RC) THEN
       ZRCS(:,:,:) = ZRCS(:,:,:) + ZTOT_RC_AUTO(:,:,:)/PTSTEP
-      CALL BUDGET (ZRCS(:,:,:)*PRHODJ(:,:,:), 7  , 'AUTO_BU_RRC')
+      CALL BUDGET (ZRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC, 'AUTO_BU_RRC')
       ZRCS(:,:,:) = ZRCS(:,:,:) + ZTOT_RC_ACCR(:,:,:)/PTSTEP
-      CALL BUDGET (ZRCS(:,:,:)*PRHODJ(:,:,:), 7  , 'ACCR_BU_RRC')
+      CALL BUDGET (ZRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC, 'ACCR_BU_RRC')
       ! impact of rain evap !!!!!!
       ZRCS(:,:,:) = ZRCS(:,:,:)
-      CALL BUDGET (ZRCS(:,:,:)*PRHODJ(:,:,:), 7  , 'REVA_BU_RRC')
+      CALL BUDGET (ZRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC, 'REVA_BU_RRC')
       ZRCS(:,:,:) = ZRCS(:,:,:) + ZTOT_RC_HONC(:,:,:)/PTSTEP
-      CALL BUDGET (ZRCS(:,:,:)*PRHODJ(:,:,:), 7  , 'HONC_BU_RRC')
+      CALL BUDGET (ZRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC, 'HONC_BU_RRC')
       ZRCS(:,:,:) = ZRCS(:,:,:) + ZTOT_RC_IMLT(:,:,:)/PTSTEP
-      CALL BUDGET (ZRCS(:,:,:)*PRHODJ(:,:,:), 7  , 'IMLT_BU_RRC')
+      CALL BUDGET (ZRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC, 'IMLT_BU_RRC')
       ZRCS(:,:,:) = ZRCS(:,:,:) + ZTOT_RC_BERFI(:,:,:)/PTSTEP
-      CALL BUDGET (ZRCS(:,:,:)*PRHODJ(:,:,:), 7  , 'BERFI_BU_RRC')
+      CALL BUDGET (ZRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC, 'BERFI_BU_RRC')
       ZRCS(:,:,:) = ZRCS(:,:,:) + ZTOT_RC_RIM(:,:,:)/PTSTEP
-      CALL BUDGET (ZRCS(:,:,:)*PRHODJ(:,:,:), 7  , 'RIM_BU_RRC')
+      CALL BUDGET (ZRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC, 'RIM_BU_RRC')
       ZRCS(:,:,:) = ZRCS(:,:,:) + ZTOT_RC_WETG(:,:,:)/PTSTEP
-      CALL BUDGET (ZRCS(:,:,:)*PRHODJ(:,:,:), 7  , 'WETG_BU_RRC')
+      CALL BUDGET (ZRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC, 'WETG_BU_RRC')
       ZRCS(:,:,:) = ZRCS(:,:,:) + ZTOT_RC_DRYG(:,:,:)/PTSTEP
-      CALL BUDGET (ZRCS(:,:,:)*PRHODJ(:,:,:), 7  , 'DRYG_BU_RRC')
+      CALL BUDGET (ZRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC, 'DRYG_BU_RRC')
       ZRCS(:,:,:) = ZRCS(:,:,:) - ZTOT_RR_CVRC(:,:,:)/PTSTEP
-      CALL BUDGET (ZRCS(:,:,:)*PRHODJ(:,:,:), 7  , 'CVRC_BU_RRC')
+      CALL BUDGET (ZRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC, 'CVRC_BU_RRC')
    END IF
    
    IF (LBUDGET_RR) THEN
       ZRRS(:,:,:) = ZRRS(:,:,:) - ZTOT_RC_AUTO(:,:,:)/PTSTEP
-      CALL BUDGET (ZRRS(:,:,:)*PRHODJ(:,:,:), 8  , 'AUTO_BU_RRR')
+      CALL BUDGET (ZRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR, 'AUTO_BU_RRR')
       ZRRS(:,:,:) = ZRRS(:,:,:) - ZTOT_RC_ACCR(:,:,:)/PTSTEP
-      CALL BUDGET (ZRRS(:,:,:)*PRHODJ(:,:,:), 8  , 'ACCR_BU_RRR')
+      CALL BUDGET (ZRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR, 'ACCR_BU_RRR')
       ZRRS(:,:,:) = ZRRS(:,:,:) + ZTOT_RR_EVAP(:,:,:)/PTSTEP
-      CALL BUDGET (ZRRS(:,:,:)*PRHODJ(:,:,:), 8  , 'REVA_BU_RRR')
+      CALL BUDGET (ZRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR, 'REVA_BU_RRR')
       ZRRS(:,:,:) = ZRRS(:,:,:) + ZTOT_RR_HONR(:,:,:)/PTSTEP
-      CALL BUDGET (ZRRS(:,:,:)*PRHODJ(:,:,:), 8  , 'HONR_BU_RRR')
+      CALL BUDGET (ZRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR, 'HONR_BU_RRR')
       ZRRS(:,:,:) = ZRRS(:,:,:) + ZTOT_RR_ACC(:,:,:)/PTSTEP
-      CALL BUDGET (ZRRS(:,:,:)*PRHODJ(:,:,:), 8  , 'ACC_BU_RRR')
+      CALL BUDGET (ZRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR, 'ACC_BU_RRR')
       ZRRS(:,:,:) = ZRRS(:,:,:) + ZTOT_RR_CFRZ(:,:,:)/PTSTEP
-      CALL BUDGET (ZRRS(:,:,:)*PRHODJ(:,:,:), 8  , 'CFRZ_BU_RRR')
+      CALL BUDGET (ZRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR, 'CFRZ_BU_RRR')
       ZRRS(:,:,:) = ZRRS(:,:,:) + ZTOT_RR_WETG(:,:,:)/PTSTEP
-      CALL BUDGET (ZRRS(:,:,:)*PRHODJ(:,:,:), 8  , 'WETG_BU_RRR')
+      CALL BUDGET (ZRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR, 'WETG_BU_RRR')
       ZRRS(:,:,:) = ZRRS(:,:,:) + ZTOT_RR_DRYG(:,:,:)/PTSTEP
-      CALL BUDGET (ZRRS(:,:,:)*PRHODJ(:,:,:), 8  , 'DRYG_BU_RRR')
+      CALL BUDGET (ZRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR, 'DRYG_BU_RRR')
       ZRRS(:,:,:) = ZRRS(:,:,:) + ZTOT_RR_GMLT(:,:,:)/PTSTEP
-      CALL BUDGET (ZRRS(:,:,:)*PRHODJ(:,:,:), 8  , 'GMLT_BU_RRR')
+      CALL BUDGET (ZRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR, 'GMLT_BU_RRR')
       ZRRS(:,:,:) = ZRRS(:,:,:) + ZTOT_RR_CVRC(:,:,:)/PTSTEP
-      CALL BUDGET (ZRRS(:,:,:)*PRHODJ(:,:,:), 8  , 'CVRC_BU_RRR')
+      CALL BUDGET (ZRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR, 'CVRC_BU_RRR')
    END IF
   
    IF (LBUDGET_RI) THEN
       ZRIS(:,:,:) = ZRIS(:,:,:) - ZTOT_RC_HONC(:,:,:)/PTSTEP
-      CALL BUDGET (ZRIS(:,:,:)*PRHODJ(:,:,:), 9  , 'HONC_BU_RRI')
+      CALL BUDGET (ZRIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RI, 'HONC_BU_RRI')
       ZRIS(:,:,:) = ZRIS(:,:,:) + ZTOT_RI_CNVI(:,:,:)/PTSTEP
-      CALL BUDGET (ZRIS(:,:,:)*PRHODJ(:,:,:), 9  , 'CNVI_BU_RRI')
+      CALL BUDGET (ZRIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RI, 'CNVI_BU_RRI')
       ZRIS(:,:,:) = ZRIS(:,:,:) + ZTOT_RI_CNVS(:,:,:)/PTSTEP
-      CALL BUDGET (ZRIS(:,:,:)*PRHODJ(:,:,:), 9  , 'CNVS_BU_RRI')
+      CALL BUDGET (ZRIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RI, 'CNVS_BU_RRI')
       ZRIS(:,:,:) = ZRIS(:,:,:) + ZTOT_RI_AGGS(:,:,:)/PTSTEP
-      CALL BUDGET (ZRIS(:,:,:)*PRHODJ(:,:,:), 9  , 'AGGS_BU_RRI')
+      CALL BUDGET (ZRIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RI, 'AGGS_BU_RRI')
       ZRIS(:,:,:) = ZRIS(:,:,:) - ZTOT_RC_IMLT(:,:,:)/PTSTEP
-      CALL BUDGET (ZRIS(:,:,:)*PRHODJ(:,:,:), 9  , 'IMLT_BU_RRI')
+      CALL BUDGET (ZRIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RI, 'IMLT_BU_RRI')
       ZRIS(:,:,:) = ZRIS(:,:,:) - ZTOT_RC_BERFI(:,:,:)/PTSTEP
-      CALL BUDGET (ZRIS(:,:,:)*PRHODJ(:,:,:), 9  , 'BERFI_BU_RRI')
+      CALL BUDGET (ZRIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RI, 'BERFI_BU_RRI')
       ZRIS(:,:,:) = ZRIS(:,:,:) + ZTOT_RI_HMS(:,:,:)/PTSTEP
-      CALL BUDGET (ZRIS(:,:,:)*PRHODJ(:,:,:), 9  , 'HMS_BU_RRI')
+      CALL BUDGET (ZRIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RI, 'HMS_BU_RRI')
       ZRIS(:,:,:) = ZRIS(:,:,:) + ZTOT_RI_CFRZ(:,:,:)/PTSTEP
-      CALL BUDGET (ZRIS(:,:,:)*PRHODJ(:,:,:), 9  , 'CFRZ_BU_RRI')
+      CALL BUDGET (ZRIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RI, 'CFRZ_BU_RRI')
       ZRIS(:,:,:) = ZRIS(:,:,:) + ZTOT_RI_WETG(:,:,:)/PTSTEP
-      CALL BUDGET (ZRIS(:,:,:)*PRHODJ(:,:,:), 9  , 'WETG_BU_RRI')
+      CALL BUDGET (ZRIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RI, 'WETG_BU_RRI')
       ZRIS(:,:,:) = ZRIS(:,:,:) + ZTOT_RI_DRYG(:,:,:)/PTSTEP
-      CALL BUDGET (ZRIS(:,:,:)*PRHODJ(:,:,:), 9  , 'DRYG_BU_RRI')
+      CALL BUDGET (ZRIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RI, 'DRYG_BU_RRI')
       ZRIS(:,:,:) = ZRIS(:,:,:) + ZTOT_RI_HMG(:,:,:)/PTSTEP
-      CALL BUDGET (ZRIS(:,:,:)*PRHODJ(:,:,:), 9  , 'HMG_BU_RRI')
+      CALL BUDGET (ZRIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RI, 'HMG_BU_RRI')
    END IF
    
    IF (LBUDGET_RS) THEN
       ZRSS(:,:,:) = ZRSS(:,:,:) - ZTOT_RI_CNVI(:,:,:)/PTSTEP
-      CALL BUDGET (ZRSS(:,:,:)*PRHODJ(:,:,:), 10 , 'CNVI_BU_RRS')
+      CALL BUDGET (ZRSS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RS, 'CNVI_BU_RRS')
       ZRSS(:,:,:) = ZRSS(:,:,:) + ZTOT_RS_DEPS(:,:,:)/PTSTEP
-      CALL BUDGET (ZRSS(:,:,:)*PRHODJ(:,:,:), 10 , 'DEPS_BU_RRS')
+      CALL BUDGET (ZRSS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RS, 'DEPS_BU_RRS')
       ZRSS(:,:,:) = ZRSS(:,:,:) - ZTOT_RI_CNVS(:,:,:)/PTSTEP
-      CALL BUDGET (ZRSS(:,:,:)*PRHODJ(:,:,:), 10 , 'CNVS_BU_RRS')
+      CALL BUDGET (ZRSS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RS, 'CNVS_BU_RRS')
       ZRSS(:,:,:) = ZRSS(:,:,:) - ZTOT_RI_AGGS(:,:,:)/PTSTEP
-      CALL BUDGET (ZRSS(:,:,:)*PRHODJ(:,:,:), 10 , 'AGGS_BU_RRS')
+      CALL BUDGET (ZRSS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RS, 'AGGS_BU_RRS')
       ZRSS(:,:,:) = ZRSS(:,:,:) + ZTOT_RS_RIM(:,:,:)/PTSTEP
-      CALL BUDGET (ZRSS(:,:,:)*PRHODJ(:,:,:), 10 , 'RIM_BU_RRS')
+      CALL BUDGET (ZRSS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RS, 'RIM_BU_RRS')
       ZRSS(:,:,:) = ZRSS(:,:,:) + ZTOT_RS_HMS(:,:,:)/PTSTEP
-      CALL BUDGET (ZRSS(:,:,:)*PRHODJ(:,:,:), 10 , 'HMS_BU_RRS')
+      CALL BUDGET (ZRSS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RS, 'HMS_BU_RRS')
       ZRSS(:,:,:) = ZRSS(:,:,:) + ZTOT_RS_ACC(:,:,:)/PTSTEP
-      CALL BUDGET (ZRSS(:,:,:)*PRHODJ(:,:,:), 10 , 'ACC_BU_RRS')
+      CALL BUDGET (ZRSS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RS, 'ACC_BU_RRS')
       ZRSS(:,:,:) = ZRSS(:,:,:) + ZTOT_RS_CMEL(:,:,:)/PTSTEP
-      CALL BUDGET (ZRSS(:,:,:)*PRHODJ(:,:,:), 10 , 'CMEL_BU_RRS')
+      CALL BUDGET (ZRSS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RS, 'CMEL_BU_RRS')
       ZRSS(:,:,:) = ZRSS(:,:,:) + ZTOT_RS_WETG(:,:,:)/PTSTEP
-      CALL BUDGET (ZRSS(:,:,:)*PRHODJ(:,:,:), 10 , 'WETG_BU_RRS')
+      CALL BUDGET (ZRSS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RS, 'WETG_BU_RRS')
       ZRSS(:,:,:) = ZRSS(:,:,:) + ZTOT_RS_DRYG(:,:,:)/PTSTEP
-      CALL BUDGET (ZRSS(:,:,:)*PRHODJ(:,:,:), 10 , 'DRYG_BU_RRS')
+      CALL BUDGET (ZRSS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RS, 'DRYG_BU_RRS')
    END IF
    
    IF (LBUDGET_RG) THEN
       ZRGS(:,:,:) = ZRGS(:,:,:) - ZTOT_RR_HONR(:,:,:)/PTSTEP
-      CALL BUDGET (ZRGS(:,:,:)*PRHODJ(:,:,:), 11 , 'HONR_BU_RRG')
+      CALL BUDGET (ZRGS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RG, 'HONR_BU_RRG')
       ZRGS(:,:,:) = ZRGS(:,:,:) + ZTOT_RG_DEPG(:,:,:)/PTSTEP
-      CALL BUDGET (ZRGS(:,:,:)*PRHODJ(:,:,:), 11 , 'DEPG_BU_RRG')
+      CALL BUDGET (ZRGS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RG, 'DEPG_BU_RRG')
       ZRGS(:,:,:) = ZRGS(:,:,:) + ZTOT_RG_RIM(:,:,:)/PTSTEP
-      CALL BUDGET (ZRGS(:,:,:)*PRHODJ(:,:,:), 11 , 'RIM_BU_RRG')
+      CALL BUDGET (ZRGS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RG, 'RIM_BU_RRG')
       ZRGS(:,:,:) = ZRGS(:,:,:) + ZTOT_RG_ACC(:,:,:)/PTSTEP
-      CALL BUDGET (ZRGS(:,:,:)*PRHODJ(:,:,:), 11 , 'ACC_BU_RRG')
+      CALL BUDGET (ZRGS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RG, 'ACC_BU_RRG')
       ZRGS(:,:,:) = ZRGS(:,:,:) - ZTOT_RS_CMEL(:,:,:)/PTSTEP
-      CALL BUDGET (ZRGS(:,:,:)*PRHODJ(:,:,:), 11 , 'CMEL_BU_RRG')
+      CALL BUDGET (ZRGS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RG, 'CMEL_BU_RRG')
       ZRGS(:,:,:) = ZRGS(:,:,:) - ZTOT_RR_CFRZ(:,:,:)/PTSTEP - ZTOT_RI_CFRZ(:,:,:)/PTSTEP
-      CALL BUDGET (ZRGS(:,:,:)*PRHODJ(:,:,:), 11 , 'CFRZ_BU_RRG')
+      CALL BUDGET (ZRGS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RG, 'CFRZ_BU_RRG')
       ZRGS(:,:,:) = ZRGS(:,:,:) + ZTOT_RG_WETG(:,:,:)/PTSTEP
-      CALL BUDGET (ZRGS(:,:,:)*PRHODJ(:,:,:), 11 , 'WETG_BU_RRG')
+      CALL BUDGET (ZRGS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RG, 'WETG_BU_RRG')
       ZRGS(:,:,:) = ZRGS(:,:,:) + ZTOT_RG_DRYG(:,:,:)/PTSTEP
-      CALL BUDGET (ZRGS(:,:,:)*PRHODJ(:,:,:), 11 , 'DRYG_BU_RRG')
+      CALL BUDGET (ZRGS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RG, 'DRYG_BU_RRG')
       ZRGS(:,:,:) = ZRGS(:,:,:) + ZTOT_RG_HMG(:,:,:)/PTSTEP
-      CALL BUDGET (ZRGS(:,:,:)*PRHODJ(:,:,:), 11 , 'HMG_BU_RRG')
+      CALL BUDGET (ZRGS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RG, 'HMG_BU_RRG')
       ZRGS(:,:,:) = ZRGS(:,:,:) - ZTOT_RR_GMLT(:,:,:)/PTSTEP
-      CALL BUDGET (ZRGS(:,:,:)*PRHODJ(:,:,:), 11 , 'GMLT_BU_RRG')
+      CALL BUDGET (ZRGS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RG, 'GMLT_BU_RRG')
    END IF
 
    IF (LBUDGET_RH) THEN
       ZRHS(:,:,:) = ZRHS(:,:,:) + ZTOT_RH_WETG(:,:,:)/PTSTEP
-      CALL BUDGET (ZRHS(:,:,:)*PRHODJ(:,:,:), 12 , 'WETG_BU_RRH')
+      CALL BUDGET (ZRHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RH, 'WETG_BU_RRH')
    END IF
 
    IF (LBUDGET_SV) THEN
@@ -1640,75 +1642,75 @@ IF(LBU_ENABLE) THEN
       ! Cloud droplets
       !
       ZCCS(:,:,:) = ZCCS(:,:,:) + ZTOT_CC_SELF(:,:,:)/PTSTEP
-      CALL BUDGET (ZCCS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NC  , 'SELF_BU_RSV')
+      CALL BUDGET (ZCCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NC, 'SELF_BU_RSV')
       ZCCS(:,:,:) = ZCCS(:,:,:) + ZTOT_CC_AUTO(:,:,:)/PTSTEP
-      CALL BUDGET (ZCCS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NC  , 'AUTO_BU_RSV')
+      CALL BUDGET (ZCCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NC, 'AUTO_BU_RSV')
       ZCCS(:,:,:) = ZCCS(:,:,:) + ZTOT_CC_ACCR(:,:,:)/PTSTEP
-      CALL BUDGET (ZCCS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NC  , 'ACCR_BU_RSV')
+      CALL BUDGET (ZCCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NC, 'ACCR_BU_RSV')
       ! impact of rain evap !!!!!!
       ZCCS(:,:,:) = ZCCS(:,:,:)
-      CALL BUDGET (ZCCS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NC  , 'REVA_BU_RSV')
+      CALL BUDGET (ZCCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NC, 'REVA_BU_RSV')
       ZCCS(:,:,:) = ZCCS(:,:,:) + ZTOT_CC_HONC(:,:,:)/PTSTEP
-      CALL BUDGET (ZCCS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NC  , 'HONC_BU_RSV')
+      CALL BUDGET (ZCCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NC, 'HONC_BU_RSV')
       ZCCS(:,:,:) = ZCCS(:,:,:) + ZTOT_CC_IMLT(:,:,:)/PTSTEP
-      CALL BUDGET (ZCCS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NC  , 'IMLT_BU_RSV')
+      CALL BUDGET (ZCCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NC, 'IMLT_BU_RSV')
       ZCCS(:,:,:) = ZCCS(:,:,:) + ZTOT_CC_RIM(:,:,:)/PTSTEP
-      CALL BUDGET (ZCCS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NC  , 'RIM_BU_RSV')
+      CALL BUDGET (ZCCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NC, 'RIM_BU_RSV')
       ZCCS(:,:,:) = ZCCS(:,:,:) + ZTOT_CC_WETG(:,:,:)/PTSTEP
-      CALL BUDGET (ZCCS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NC  , 'WETG_BU_RSV')
+      CALL BUDGET (ZCCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NC, 'WETG_BU_RSV')
       ZCCS(:,:,:) = ZCCS(:,:,:) + ZTOT_CC_DRYG(:,:,:)/PTSTEP
-      CALL BUDGET (ZCCS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NC  , 'DRYG_BU_RSV')
+      CALL BUDGET (ZCCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NC, 'DRYG_BU_RSV')
       ZCCS(:,:,:) = ZCCS(:,:,:) - ZTOT_CR_CVRC(:,:,:)/PTSTEP
-      CALL BUDGET (ZCCS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NC  , 'CVRC_BU_RSV')
+      CALL BUDGET (ZCCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NC, 'CVRC_BU_RSV')
       !
       ! Rain drops
       !
       ZCRS(:,:,:) = ZCRS(:,:,:) + ZTOT_CR_AUTO(:,:,:)/PTSTEP
-      CALL BUDGET (ZCRS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NR  , 'AUTO_BU_RSV')
+      CALL BUDGET (ZCRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NR, 'AUTO_BU_RSV')
       ZCRS(:,:,:) = ZCRS(:,:,:) + ZTOT_CR_SCBU(:,:,:)/PTSTEP
-      CALL BUDGET (ZCRS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NR  , 'SCBU_BU_RSV')
+      CALL BUDGET (ZCRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NR, 'SCBU_BU_RSV')
       ! Rain evaporation !!!!!!!!!!!!!
       ZCRS(:,:,:) = ZCRS(:,:,:)
-      CALL BUDGET (ZCRS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NR  , 'REVA_BU_RSV')
+      CALL BUDGET (ZCRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NR, 'REVA_BU_RSV')
       ZCRS(:,:,:) = ZCRS(:,:,:) + ZTOT_CR_BRKU(:,:,:)/PTSTEP
-      CALL BUDGET (ZCRS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NR  , 'BRKU_BU_RSV')
+      CALL BUDGET (ZCRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NR, 'BRKU_BU_RSV')
       ZCRS(:,:,:) = ZCRS(:,:,:) + ZTOT_CR_HONR(:,:,:)/PTSTEP
-      CALL BUDGET (ZCRS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NR  , 'HONR_BU_RSV')
+      CALL BUDGET (ZCRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NR, 'HONR_BU_RSV')
       ZCRS(:,:,:) = ZCRS(:,:,:) + ZTOT_CR_ACC(:,:,:)/PTSTEP
-      CALL BUDGET (ZCRS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NR  , 'ACC_BU_RSV')
+      CALL BUDGET (ZCRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NR, 'ACC_BU_RSV')
       ZCRS(:,:,:) = ZCRS(:,:,:) + ZTOT_CR_CFRZ(:,:,:)/PTSTEP
-      CALL BUDGET (ZCRS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NR  , 'CFRZ_BU_RSV')
+      CALL BUDGET (ZCRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NR, 'CFRZ_BU_RSV')
       ZCRS(:,:,:) = ZCRS(:,:,:) + ZTOT_CR_WETG(:,:,:)/PTSTEP
-      CALL BUDGET (ZCRS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NR  , 'WETG_BU_RSV')
+      CALL BUDGET (ZCRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NR, 'WETG_BU_RSV')
       ZCRS(:,:,:) = ZCRS(:,:,:) + ZTOT_CR_DRYG(:,:,:)/PTSTEP
-      CALL BUDGET (ZCRS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NR  , 'DRYG_BU_RSV')
+      CALL BUDGET (ZCRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NR, 'DRYG_BU_RSV')
       ZCRS(:,:,:) = ZCRS(:,:,:) + ZTOT_CR_GMLT(:,:,:)/PTSTEP
-      CALL BUDGET (ZCRS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NR  , 'GMLT_BU_RSV')
+      CALL BUDGET (ZCRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NR, 'GMLT_BU_RSV')
       ZCRS(:,:,:) = ZCRS(:,:,:) + ZTOT_CR_CVRC(:,:,:)/PTSTEP
-      CALL BUDGET (ZCRS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NR  , 'CVRC_BU_RSV')
+      CALL BUDGET (ZCRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NR, 'CVRC_BU_RSV')
       !
       ! Ice crystals
       !
       ZCIS(:,:,:) = ZCIS(:,:,:) - ZTOT_CC_HONC(:,:,:)/PTSTEP
-      CALL BUDGET (ZCIS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NI  , 'HONC_BU_RSV')
+      CALL BUDGET (ZCIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NI, 'HONC_BU_RSV')
       ZCIS(:,:,:) = ZCIS(:,:,:) + ZTOT_CI_CNVI(:,:,:)/PTSTEP
-      CALL BUDGET (ZCIS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NI  , 'CNVI_BU_RSV')
+      CALL BUDGET (ZCIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NI, 'CNVI_BU_RSV')
       ZCIS(:,:,:) = ZCIS(:,:,:) + ZTOT_CI_CNVS(:,:,:)/PTSTEP
-      CALL BUDGET (ZCIS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NI  , 'CNVS_BU_RSV')
+      CALL BUDGET (ZCIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NI, 'CNVS_BU_RSV')
       ZCIS(:,:,:) = ZCIS(:,:,:) + ZTOT_CI_AGGS(:,:,:)/PTSTEP
-      CALL BUDGET (ZCIS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NI  , 'AGGS_BU_RSV')
+      CALL BUDGET (ZCIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NI, 'AGGS_BU_RSV')
       ZCIS(:,:,:) = ZCIS(:,:,:) - ZTOT_CC_IMLT(:,:,:)/PTSTEP
-      CALL BUDGET (ZCIS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NI  , 'IMLT_BU_RSV')
+      CALL BUDGET (ZCIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NI, 'IMLT_BU_RSV')
       ZCIS(:,:,:) = ZCIS(:,:,:) + ZTOT_CI_HMS(:,:,:)/PTSTEP
-      CALL BUDGET (ZCIS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NI  , 'HMS_BU_RSV')
+      CALL BUDGET (ZCIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NI, 'HMS_BU_RSV')
       ZCIS(:,:,:) = ZCIS(:,:,:) + ZTOT_CI_CFRZ(:,:,:)/PTSTEP
-      CALL BUDGET (ZCIS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NI  , 'CFRZ_BU_RSV')
+      CALL BUDGET (ZCIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NI, 'CFRZ_BU_RSV')
       ZCIS(:,:,:) = ZCIS(:,:,:) + ZTOT_CI_WETG(:,:,:)/PTSTEP
-      CALL BUDGET (ZCIS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NI  , 'WETG_BU_RSV')
+      CALL BUDGET (ZCIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NI, 'WETG_BU_RSV')
       ZCIS(:,:,:) = ZCIS(:,:,:) + ZTOT_CI_DRYG(:,:,:)/PTSTEP
-      CALL BUDGET (ZCIS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NI  , 'DRYG_BU_RSV')
+      CALL BUDGET (ZCIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NI, 'DRYG_BU_RSV')
       ZCIS(:,:,:) = ZCIS(:,:,:) + ZTOT_CI_HMG(:,:,:)/PTSTEP
-      CALL BUDGET (ZCIS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NI  , 'HMG_BU_RSV')
+      CALL BUDGET (ZCIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NI, 'HMG_BU_RSV')
    END IF
 !!$            ZTOT_RC_EVAP(I1(II),I2(II),I3(II)) =   ZTOT_RC_EVAP(I1(II),I2(II),I3(II))   + Z_RC_EVAP(II)  * ZMAXTIME(II)
 !!$            ZTOT_CC_EVAP(I1(II),I2(II),I3(II)) =   ZTOT_CC_EVAP(I1(II),I2(II),I3(II))   + Z_CC_EVAP(II)  * ZMAXTIME(II)
diff --git a/src/MNH/lima_adjust.f90 b/src/MNH/lima_adjust.f90
index 752c861b9..4b2056f20 100644
--- a/src/MNH/lima_adjust.f90
+++ b/src/MNH/lima_adjust.f90
@@ -1197,21 +1197,21 @@ END IF
 !
 !
 IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
-  IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:) * PRHODJ(:,:,:),4,'CEDS_BU_RTH')
-  IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:) * PRHODJ(:,:,:),6,'CEDS_BU_RRV')
-  IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:) * PRHODJ(:,:,:),7,'CEDS_BU_RRC')
-  IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:) * PRHODJ(:,:,:),9,'CEDS_BU_RRI')
+  IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:) * PRHODJ(:,:,:),NBUDGET_TH,'CEDS_BU_RTH')
+  IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:) * PRHODJ(:,:,:),NBUDGET_RV,'CEDS_BU_RRV')
+  IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:) * PRHODJ(:,:,:),NBUDGET_RC,'CEDS_BU_RRC')
+  IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:) * PRHODJ(:,:,:),NBUDGET_RI,'CEDS_BU_RRI')
   IF (LBUDGET_SV) THEN
-    CALL BUDGET (PCCS(:,:,:)   * PRHODJ(:,:,:),12+NSV_LIMA_NC,'CEDS_BU_RSV') ! RCC
-    CALL BUDGET (PCIS(:,:,:)   * PRHODJ(:,:,:),12+NSV_LIMA_NI,'CEDS_BU_RSV') ! RCI
+    CALL BUDGET (PCCS(:,:,:)   * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_LIMA_NC,'CEDS_BU_RSV') ! RCC
+    CALL BUDGET (PCIS(:,:,:)   * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_LIMA_NI,'CEDS_BU_RSV') ! RCI
     IF (NMOD_CCN .GE. 1) THEN
        DO JL = 1, NMOD_CCN
-          CALL BUDGET (PNFS(:,:,:,JL)*PRHODJ(:,:,:),12+NSV_LIMA_CCN_FREE+JL-1,'CEDS_BU_RSV') ! RCC
+          CALL BUDGET (PNFS(:,:,:,JL)*PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_LIMA_CCN_FREE+JL-1,'CEDS_BU_RSV') ! RCC
        END DO
     END IF
     IF (NMOD_IFN .GE. 1) THEN
        DO JL = 1, NMOD_IFN
-          CALL BUDGET (PIFS(:,:,:,JL)*PRHODJ(:,:,:),12+NSV_LIMA_IFN_FREE+JL-1,'CEDS_BU_RSV') ! RCC
+          CALL BUDGET (PIFS(:,:,:,JL)*PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_LIMA_IFN_FREE+JL-1,'CEDS_BU_RSV') ! RCC
        END DO
     END IF
   END IF
diff --git a/src/MNH/lima_cold.f90 b/src/MNH/lima_cold.f90
index 28b88ca60..587d2712d 100644
--- a/src/MNH/lima_cold.f90
+++ b/src/MNH/lima_cold.f90
@@ -309,12 +309,12 @@ CALL LIMA_COLD_SEDIMENTATION (OSEDI, KSPLITG, PTSTEP, KMI,     &
                               PINPRH                  )
 
 IF (LBU_ENABLE) THEN
-  IF (LBUDGET_RI .AND. OSEDI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9  ,'SEDI_BU_RRI')
-  IF (LBUDGET_RS .AND. LSNOW) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),10 ,'SEDI_BU_RRS')
-  IF (LBUDGET_RG .AND. LSNOW) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),11 ,'SEDI_BU_RRG')
-  IF (LBUDGET_RH .AND. LHAIL) CALL BUDGET (PRHS(:,:,:)*PRHODJ(:,:,:),12 ,'SEDI_BU_RRH')
+  IF (LBUDGET_RI .AND. OSEDI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RI,'SEDI_BU_RRI')
+  IF (LBUDGET_RS .AND. LSNOW) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RS,'SEDI_BU_RRS')
+  IF (LBUDGET_RG .AND. LSNOW) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RG,'SEDI_BU_RRG')
+  IF (LBUDGET_RH .AND. LHAIL) CALL BUDGET (PRHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RH,'SEDI_BU_RRH')
   IF (LBUDGET_SV) THEN
-    IF (OSEDI) CALL BUDGET (PCIS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NI,'SEDI_BU_RSV') ! RCI
+    IF (OSEDI) CALL BUDGET (PCIS(:,:,:)*PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_LIMA_NI,'SEDI_BU_RSV') ! RCI
   END IF
 END IF
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/lima_cold_hom_nucl.f90 b/src/MNH/lima_cold_hom_nucl.f90
index f6c3f4211..3882ac276 100644
--- a/src/MNH/lima_cold_hom_nucl.f90
+++ b/src/MNH/lima_cold_hom_nucl.f90
@@ -449,23 +449,23 @@ IF (INEGT.GT.0) THEN
    IF (NBUMOD==KMI .AND. LBU_ENABLE .AND. OHHONI .AND. NMOD_CCN.GT.0 ) THEN
      IF (LBUDGET_TH) CALL BUDGET (                                                 &
                      UNPACK(ZTHS(:),MASK=GNEGT(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),&
-                                                                 4,'HONH_BU_RTH')
+                                                                 NBUDGET_TH,'HONH_BU_RTH')
      IF (LBUDGET_RV) CALL BUDGET (                                                 &
                      UNPACK(ZRVS(:),MASK=GNEGT(:,:,:),FIELD=PRVS)*PRHODJ(:,:,:),&
-                                                                 6,'HONH_BU_RRV')
+                                                                 NBUDGET_RV,'HONH_BU_RRV')
      IF (LBUDGET_RI) CALL BUDGET (                                                 &
                      UNPACK(ZRIS(:),MASK=GNEGT(:,:,:),FIELD=PRIS)*PRHODJ(:,:,:),&
-                                                                 9,'HONH_BU_RRI')
+                                                                 NBUDGET_RI,'HONH_BU_RRI')
      IF (LBUDGET_SV) THEN
        CALL BUDGET ( UNPACK(ZCIS(:),MASK=GNEGT(:,:,:),FIELD=PCIS)*PRHODJ(:,:,:),&
-                                                          12+NSV_LIMA_NI,'HONH_BU_RSV') ! RCI
+                                                  NBUDGET_SV1-1+NSV_LIMA_NI,'HONH_BU_RSV') ! RCI
        IF (NMOD_CCN.GE.1) THEN
           DO JL=1, NMOD_CCN
              CALL BUDGET ( UNPACK(ZNFS(:,JL),MASK=GNEGT(:,:,:),FIELD=PNFS(:,:,:,JL))*PRHODJ(:,:,:),&
-                  12+NSV_LIMA_CCN_FREE+JL-1,'HONH_BU_RSV') 
+                                       NBUDGET_SV1-1+NSV_LIMA_CCN_FREE+JL-1,'HONH_BU_RSV')
           END DO
           CALL BUDGET ( UNPACK(ZZNHS(:),MASK=GNEGT(:,:,:),FIELD=ZNHS(:,:,:))*PRHODJ(:,:,:),&
-                  12+NSV_LIMA_HOM_HAZE,'HONH_BU_RSV') 
+                                            NBUDGET_SV1-1+NSV_LIMA_HOM_HAZE,'HONH_BU_RSV')
 
        END IF
      END IF
@@ -508,18 +508,18 @@ IF (LWARM) THEN
    IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
      IF (LBUDGET_TH) CALL BUDGET (                                              &
                      UNPACK(ZTHS(:),MASK=GNEGT(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),&
-                                                                 4,'HONC_BU_RTH')
+                                                                 NBUDGET_TH,'HONC_BU_RTH')
      IF (LBUDGET_RC) CALL BUDGET (                                              &
                      UNPACK(ZRCS(:),MASK=GNEGT(:,:,:),FIELD=PRCS)*PRHODJ(:,:,:),&
-                                                                 7,'HONC_BU_RRC')
+                                                                 NBUDGET_RC,'HONC_BU_RRC')
      IF (LBUDGET_RI) CALL BUDGET (                                              &
                      UNPACK(ZRIS(:),MASK=GNEGT(:,:,:),FIELD=PRIS)*PRHODJ(:,:,:),&
-                                                                 9,'HONC_BU_RRI')
+                                                                 NBUDGET_RI,'HONC_BU_RRI')
      IF (LBUDGET_SV) THEN
        CALL BUDGET ( UNPACK(ZCCS(:),MASK=GNEGT(:,:,:),FIELD=PCCS)*PRHODJ(:,:,:),&
-                                                          12+NSV_LIMA_NC,'HONC_BU_RSV')
+                                                  NBUDGET_SV1-1+NSV_LIMA_NC,'HONC_BU_RSV')
        CALL BUDGET ( UNPACK(ZCIS(:),MASK=GNEGT(:,:,:),FIELD=PCIS)*PRHODJ(:,:,:),&
-                                                          12+NSV_LIMA_NI,'HONC_BU_RSV')
+                                                  NBUDGET_SV1-1+NSV_LIMA_NI,'HONC_BU_RSV')
      END IF
    END IF
 END IF
@@ -549,16 +549,16 @@ IF (LWARM .AND. LRAIN) THEN
    IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
      IF (LBUDGET_TH) CALL BUDGET (                                                 &
                      UNPACK(ZTHS(:),MASK=GNEGT(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),&
-                                                                 4,'HONR_BU_RTH')
+                                                                NBUDGET_TH,'HONR_BU_RTH')
      IF (LBUDGET_RR) CALL BUDGET (                                                 &
                      UNPACK(ZRRS(:),MASK=GNEGT(:,:,:),FIELD=PRRS)*PRHODJ(:,:,:),&
-                                                                 8,'HONR_BU_RRR')
+                                                                NBUDGET_RR,'HONR_BU_RRR')
      IF (LBUDGET_RG) CALL BUDGET (                                                 &
                      UNPACK(ZRGS(:),MASK=GNEGT(:,:,:),FIELD=PRGS)*PRHODJ(:,:,:),&
-                                                                11,'HONR_BU_RRG')
+                                                                NBUDGET_RG,'HONR_BU_RRG')
      IF (LBUDGET_SV) THEN
        CALL BUDGET ( UNPACK(ZCRS(:),MASK=GNEGT(:,:,:),FIELD=PCRS)*PRHODJ(:,:,:),&
-                                                          12+NSV_LIMA_NR,'HONR_BU_RSV')
+                                                 NBUDGET_SV1-1+NSV_LIMA_NR,'HONR_BU_RSV')
      END IF
    END IF
 END IF
@@ -639,46 +639,46 @@ ELSE
    IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
      IF (LBUDGET_TH) THEN
        ZW(:,:,:) = PTHS(:,:,:)*PRHODJ(:,:,:)
-       IF( OHHONI .AND. NMOD_CCN.GT.0 ) CALL BUDGET (ZW,4,'HONH_BU_RTH')
-       IF (LWARM) CALL BUDGET (ZW,4,'HONC_BU_RTH')
-       IF (LWARM .AND. LRAIN) CALL BUDGET (ZW,4,'HONR_BU_RTH')
+       IF( OHHONI .AND. NMOD_CCN.GT.0 ) CALL BUDGET (ZW,NBUDGET_TH,'HONH_BU_RTH')
+       IF (LWARM) CALL BUDGET (ZW,NBUDGET_TH,'HONC_BU_RTH')
+       IF (LWARM .AND. LRAIN) CALL BUDGET (ZW,NBUDGET_TH,'HONR_BU_RTH')
      ENDIF
      IF (LBUDGET_RV) THEN
        ZW(:,:,:) = PRVS(:,:,:)*PRHODJ(:,:,:)
-       IF( OHHONI .AND. NMOD_CCN.GT.0 ) CALL BUDGET (ZW,6,'HONH_BU_RRV')
+       IF( OHHONI .AND. NMOD_CCN.GT.0 ) CALL BUDGET (ZW,NBUDGET_RV,'HONH_BU_RRV')
      ENDIF
      IF (LBUDGET_RC) THEN
        ZW(:,:,:) = PRCS(:,:,:)*PRHODJ(:,:,:)
-       IF (LWARM) CALL BUDGET (ZW,7,'HONC_BU_RRC')
+       IF (LWARM) CALL BUDGET (ZW,NBUDGET_RC,'HONC_BU_RRC')
      ENDIF
      IF (LBUDGET_RR) THEN
        ZW(:,:,:) = PRRS(:,:,:)*PRHODJ(:,:,:)
-       IF (LWARM .AND. LRAIN) CALL BUDGET (ZW,8,'HONR_BU_RRR')
+       IF (LWARM .AND. LRAIN) CALL BUDGET (ZW,NBUDGET_RR,'HONR_BU_RRR')
      ENDIF
      IF (LBUDGET_RI) THEN
        ZW(:,:,:) = PRIS(:,:,:)*PRHODJ(:,:,:)
-       IF( OHHONI .AND. NMOD_CCN.GT.0 ) CALL BUDGET (ZW,9,'HONH_BU_RRI')
-       IF (LWARM) CALL BUDGET (ZW,9,'HONC_BU_RRI')
+       IF( OHHONI .AND. NMOD_CCN.GT.0 ) CALL BUDGET (ZW,NBUDGET_RI,'HONH_BU_RRI')
+       IF (LWARM) CALL BUDGET (ZW,NBUDGET_RI,'HONC_BU_RRI')
      ENDIF
      IF (LBUDGET_RG) THEN
        ZW(:,:,:) = PRGS(:,:,:)*PRHODJ(:,:,:)
-       IF (LWARM .AND. LRAIN) CALL BUDGET (ZW,11,'HONR_BU_RRG')
+       IF (LWARM .AND. LRAIN) CALL BUDGET (ZW,NBUDGET_RG,'HONR_BU_RRG')
      ENDIF
      IF (LBUDGET_SV) THEN
        ZW(:,:,:) = PCCS(:,:,:)*PRHODJ(:,:,:)
-       IF (LWARM) CALL BUDGET (ZW,12+NSV_LIMA_NC,'HONC_BU_RSV')
+       IF (LWARM) CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_NC,'HONC_BU_RSV')
        ZW(:,:,:) = PCRS(:,:,:)*PRHODJ(:,:,:)
-       IF (LWARM .AND. LRAIN) CALL BUDGET (ZW,12+NSV_LIMA_NR,'HONR_BU_RSV')
+       IF (LWARM .AND. LRAIN) CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_NR,'HONR_BU_RSV')
        ZW(:,:,:) = PCIS(:,:,:)*PRHODJ(:,:,:)
-       IF( OHHONI .AND. NMOD_CCN.GT.0 ) CALL BUDGET (ZW,12+NSV_LIMA_NI,'HONH_BU_RSV')
-       IF (LWARM) CALL BUDGET (ZW,12+NSV_LIMA_NI,'HONC_BU_RSV')
+       IF( OHHONI .AND. NMOD_CCN.GT.0 ) CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_NI,'HONH_BU_RSV')
+       IF (LWARM) CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_NI,'HONC_BU_RSV')
        IF( OHHONI .AND. NMOD_CCN.GT.0 ) THEN
           DO JL=1, NMOD_CCN
              ZW(:,:,:) = PNFS(:,:,:,JL)*PRHODJ(:,:,:)
-             CALL BUDGET (ZW,12+NSV_LIMA_CCN_FREE+JL-1,'HONH_BU_RSV') 
+             CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_CCN_FREE+JL-1,'HONH_BU_RSV')
           END DO
           ZW(:,:,:) = ZNHS(:,:,:)*PRHODJ(:,:,:)
-          CALL BUDGET (ZW,12+NSV_LIMA_HOM_HAZE,'HONH_BU_RSV')
+          CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_HOM_HAZE,'HONH_BU_RSV')
        END IF
      END IF
    END IF
diff --git a/src/MNH/lima_cold_slow_processes.f90 b/src/MNH/lima_cold_slow_processes.f90
index 1973c65f3..53cdf53a7 100644
--- a/src/MNH/lima_cold_slow_processes.f90
+++ b/src/MNH/lima_cold_slow_processes.f90
@@ -356,13 +356,13 @@ IF( IMICRO >= 1 ) THEN
       IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
         IF (LBUDGET_RI) CALL BUDGET (                                          &
                    UNPACK(ZRIS(:),MASK=GMICRO(:,:,:),FIELD=PRIS)*PRHODJ(:,:,:),&
-                                                                9,'CNVI_BU_RRI')
+                                                                NBUDGET_RI,'CNVI_BU_RRI')
         IF (LBUDGET_RS) CALL BUDGET (                                          &
                    UNPACK(ZRSS(:),MASK=GMICRO(:,:,:),FIELD=PRSS)*PRHODJ(:,:,:),&
-                                                               10,'CNVI_BU_RRS')
+                                                                NBUDGET_RS,'CNVI_BU_RRS')
         IF (LBUDGET_SV) CALL BUDGET (                                          &
                    UNPACK(ZCIS(:),MASK=GMICRO(:,:,:),FIELD=PCIS)*PRHODJ(:,:,:), &
-                                                   12+NSV_LIMA_NI,'CNVI_BU_RSV')
+                                                 NBUDGET_SV1-1+NSV_LIMA_NI,'CNVI_BU_RSV')
         END IF
 !
 !
@@ -385,13 +385,13 @@ IF( IMICRO >= 1 ) THEN
       IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
         IF (LBUDGET_TH) CALL BUDGET (                                                 &
                    UNPACK(ZTHS(:),MASK=GMICRO(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),&
-                                                                4,'DEPS_BU_RTH')
+                                                                NBUDGET_TH,'DEPS_BU_RTH')
         IF (LBUDGET_RV) CALL BUDGET (                                                 &
                    UNPACK(ZRVS(:),MASK=GMICRO(:,:,:),FIELD=PRVS)*PRHODJ(:,:,:),&
-                                                                6,'DEPS_BU_RRV')
+                                                                NBUDGET_RV,'DEPS_BU_RRV')
         IF (LBUDGET_RS) CALL BUDGET (                                                 &
                    UNPACK(ZRSS(:),MASK=GMICRO(:,:,:),FIELD=PRSS)*PRHODJ(:,:,:),&
-                                                               10,'DEPS_BU_RRS')
+                                                                NBUDGET_RS,'DEPS_BU_RRS')
       END IF
 !
 !
@@ -421,13 +421,13 @@ IF( IMICRO >= 1 ) THEN
       IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
         IF (LBUDGET_RI) CALL BUDGET (                                          &
                    UNPACK(ZRIS(:),MASK=GMICRO(:,:,:),FIELD=PRIS)*PRHODJ(:,:,:),&
-                                                                9,'CNVS_BU_RRI')
+                                                                NBUDGET_RI,'CNVS_BU_RRI')
         IF (LBUDGET_RS) CALL BUDGET (                                          &
                    UNPACK(ZRSS(:),MASK=GMICRO(:,:,:),FIELD=PRSS)*PRHODJ(:,:,:),&
-                                                               10,'CNVS_BU_RRS')
+                                                                NBUDGET_RS,'CNVS_BU_RRS')
         IF (LBUDGET_SV) CALL BUDGET (                                           &
                    UNPACK(ZCIS(:),MASK=GMICRO(:,:,:),FIELD=PCIS)*PRHODJ(:,:,:), &
-                                                   12+NSV_LIMA_NI,'CNVS_BU_RSV')
+                                                 NBUDGET_SV1-1+NSV_LIMA_NI,'CNVS_BU_RSV')
       END IF
 !
 !
@@ -453,13 +453,13 @@ IF( IMICRO >= 1 ) THEN
       IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
         IF (LBUDGET_RI) CALL BUDGET (                                               &
                        UNPACK(ZRIS(:),MASK=GMICRO(:,:,:),FIELD=PRIS)*PRHODJ(:,:,:), &
-                                                                9,'AGGS_BU_RRI')
+                                                                NBUDGET_RI,'AGGS_BU_RRI')
         IF (LBUDGET_RS) CALL BUDGET (                                               &
                        UNPACK(ZRSS(:),MASK=GMICRO(:,:,:),FIELD=PRSS)*PRHODJ(:,:,:), &
-                                                               10,'AGGS_BU_RRS')
+                                                                NBUDGET_RS,'AGGS_BU_RRS')
         IF (LBUDGET_SV) CALL BUDGET (                                               &
                        UNPACK(ZCIS(:),MASK=GMICRO(:,:,:),FIELD=PCIS)*PRHODJ(:,:,:), &
-                                                   12+NSV_LIMA_NI,'AGGS_BU_RSV')
+                                                 NBUDGET_SV1-1+NSV_LIMA_NI,'AGGS_BU_RSV')
       END IF
 !
 !
@@ -521,30 +521,30 @@ ELSE
   IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
     IF (LBUDGET_TH) THEN
       ZW(:,:,:) = PTHS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,4,'DEPS_BU_RTH')
+      CALL BUDGET (ZW,NBUDGET_TH,'DEPS_BU_RTH')
     ENDIF
     IF (LBUDGET_RV) THEN
       ZW(:,:,:) = PRVS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,6,'DEPS_BU_RRV')
+      CALL BUDGET (ZW,NBUDGET_RV,'DEPS_BU_RRV')
     ENDIF
     IF (LBUDGET_RI) THEN
       ZW(:,:,:) = PRIS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,9,'CNVI_BU_RRI')
-      CALL BUDGET (ZW,9,'CNVS_BU_RRI')
-      CALL BUDGET (ZW,9,'AGGS_BU_RRI')
+      CALL BUDGET (ZW,NBUDGET_RI,'CNVI_BU_RRI')
+      CALL BUDGET (ZW,NBUDGET_RI,'CNVS_BU_RRI')
+      CALL BUDGET (ZW,NBUDGET_RI,'AGGS_BU_RRI')
     ENDIF
     IF (LBUDGET_RS) THEN
       ZW(:,:,:) = PRSS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,10,'CNVI_BU_RRS')
-      CALL BUDGET (ZW,10,'DEPS_BU_RRS')
-      CALL BUDGET (ZW,10,'CNVS_BU_RRS')
-      CALL BUDGET (ZW,10,'AGGS_BU_RRS')
+      CALL BUDGET (ZW,NBUDGET_RS,'CNVI_BU_RRS')
+      CALL BUDGET (ZW,NBUDGET_RS,'DEPS_BU_RRS')
+      CALL BUDGET (ZW,NBUDGET_RS,'CNVS_BU_RRS')
+      CALL BUDGET (ZW,NBUDGET_RS,'AGGS_BU_RRS')
     ENDIF
     IF (LBUDGET_SV) THEN
       ZW(:,:,:) = PCIS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,12+NSV_LIMA_NI,'CNVI_BU_RSV')
-      CALL BUDGET (ZW,12+NSV_LIMA_NI,'CNVS_BU_RSV')
-      CALL BUDGET (ZW,12+NSV_LIMA_NI,'AGGS_BU_RSV')
+      CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_NI,'CNVI_BU_RSV')
+      CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_NI,'CNVS_BU_RSV')
+      CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_NI,'AGGS_BU_RSV')
     ENDIF
   ENDIF
 !
diff --git a/src/MNH/lima_meyers.f90 b/src/MNH/lima_meyers.f90
index 775a104ec..28c90601f 100644
--- a/src/MNH/lima_meyers.f90
+++ b/src/MNH/lima_meyers.f90
@@ -341,16 +341,16 @@ IF( INEGT >= 1 ) THEN
   IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
     IF (LBUDGET_TH) CALL BUDGET (                                                 &
                     UNPACK(ZTHS(:),MASK=GNEGT(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),&
-                                                                4,'HIND_BU_RTH')
+                                                                NBUDGET_TH,'HIND_BU_RTH')
     IF (LBUDGET_RV) CALL BUDGET (                                                 &
                     UNPACK(ZRVS(:),MASK=GNEGT(:,:,:),FIELD=PRVS)*PRHODJ(:,:,:),&
-                                                                6,'HIND_BU_RRV')
+                                                                NBUDGET_RV,'HIND_BU_RRV')
     IF (LBUDGET_RI) CALL BUDGET (                                                 &
                     UNPACK(ZRIS(:),MASK=GNEGT(:,:,:),FIELD=PRIS)*PRHODJ(:,:,:),&
-                                                                9,'HIND_BU_RRI')
+                                                                NBUDGET_RI,'HIND_BU_RRI')
     IF (LBUDGET_SV) THEN
       CALL BUDGET ( UNPACK(ZCIS(:),MASK=GNEGT(:,:,:),FIELD=PCIS)*PRHODJ(:,:,:),&
-                                                   12+NSV_LIMA_NI,'HIND_BU_RSV')
+                                                 NBUDGET_SV1-1+NSV_LIMA_NI,'HIND_BU_RSV')
     END IF
   END IF
 !
@@ -397,12 +397,12 @@ IF( INEGT >= 1 ) THEN
 !
 ! Budget storage
   IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
-    IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:), 4,'HINC_BU_RTH')
-    IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:), 7,'HINC_BU_RRC')
-    IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:), 9,'HINC_BU_RRI')
+    IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH,'HINC_BU_RTH')
+    IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC,'HINC_BU_RRC')
+    IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RI,'HINC_BU_RRI')
     IF (LBUDGET_SV) THEN
-      CALL BUDGET ( PCCS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NC,'HINC_BU_RSV')
-      CALL BUDGET ( PCIS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NI,'HINC_BU_RSV')
+      CALL BUDGET ( PCCS(:,:,:)*PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_LIMA_NC,'HINC_BU_RSV')
+      CALL BUDGET ( PCIS(:,:,:)*PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_LIMA_NI,'HINC_BU_RSV')
     END IF
   END IF
 
@@ -445,36 +445,32 @@ ELSE
   IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
     IF (LBUDGET_TH) THEN
       ZW(:,:,:) = PTHS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,4,'HIND_BU_RTH')
-      CALL BUDGET (ZW,4,'HINC_BU_RTH')
+      CALL BUDGET (ZW,NBUDGET_TH,'HIND_BU_RTH')
+      CALL BUDGET (ZW,NBUDGET_TH,'HINC_BU_RTH')
     ENDIF
     IF (LBUDGET_RV) THEN
       ZW(:,:,:) = PRVS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,6,'HIND_BU_RRV')
+      CALL BUDGET (ZW,NBUDGET_RV,'HIND_BU_RRV')
     ENDIF
     IF (LBUDGET_RC) THEN
       ZW(:,:,:) = PRCS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,7,'HINC_BU_RRC')
+      CALL BUDGET (ZW,NBUDGET_RC,'HINC_BU_RRC')
     ENDIF
     IF (LBUDGET_RI) THEN
       ZW(:,:,:) = PRIS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,9,'HIND_BU_RRI')
-      CALL BUDGET (ZW,9,'HINC_BU_RRI')
+      CALL BUDGET (ZW,NBUDGET_RI,'HIND_BU_RRI')
+      CALL BUDGET (ZW,NBUDGET_RI,'HINC_BU_RRI')
     ENDIF
     IF (LBUDGET_SV) THEN
       ZW(:,:,:) = PCCS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,12+NSV_LIMA_NC,'HINC_BU_RSV')
+      CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_NC,'HINC_BU_RSV')
       ZW(:,:,:) = PCIS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,12+NSV_LIMA_NI,'HIND_BU_RSV')
-      CALL BUDGET (ZW,12+NSV_LIMA_NI,'HINC_BU_RSV')
+      CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_NI,'HIND_BU_RSV')
+      CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_NI,'HINC_BU_RSV')
     END IF
   END IF
 !
 END IF
-
-
-
-
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/lima_mixed.f90 b/src/MNH/lima_mixed.f90
index 7525be5b3..9f1769c81 100644
--- a/src/MNH/lima_mixed.f90
+++ b/src/MNH/lima_mixed.f90
@@ -650,108 +650,108 @@ ELSE
   IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
     IF (LBUDGET_TH) THEN
       ZW(:,:,:) = PTHS(:,:,:)*PRHODJ(:,:,:)
-      IF (LSNOW) CALL BUDGET (ZW,4,'DEPG_BU_RTH')
-      CALL BUDGET (ZW,4,'IMLT_BU_RTH')
-      CALL BUDGET (ZW,4,'BERFI_BU_RTH')
-      IF (LSNOW) CALL BUDGET (ZW,4,'RIM_BU_RTH')
-      IF (LSNOW .AND. LRAIN) CALL BUDGET (ZW,4,'ACC_BU_RTH')
-      IF (LSNOW) CALL BUDGET (ZW,4,'CFRZ_BU_RTH')
-      IF (LSNOW) CALL BUDGET (ZW,4,'WETG_BU_RTH')
-      IF (LSNOW) CALL BUDGET (ZW,4,'DRYG_BU_RTH')
-      IF (LSNOW) CALL BUDGET (ZW,4,'GMLT_BU_RTH')
-      IF (LHAIL) CALL BUDGET (ZW,4,'WETH_BU_RTH')
-      IF (LHAIL) CALL BUDGET (ZW,4,'HMLT_BU_RTH')
+      IF (LSNOW) CALL BUDGET (ZW,NBUDGET_TH,'DEPG_BU_RTH')
+      CALL BUDGET (ZW,NBUDGET_TH,'IMLT_BU_RTH')
+      CALL BUDGET (ZW,NBUDGET_TH,'BERFI_BU_RTH')
+      IF (LSNOW) CALL BUDGET (ZW,NBUDGET_TH,'RIM_BU_RTH')
+      IF (LSNOW .AND. LRAIN) CALL BUDGET (ZW,NBUDGET_TH,'ACC_BU_RTH')
+      IF (LSNOW) CALL BUDGET (ZW,NBUDGET_TH,'CFRZ_BU_RTH')
+      IF (LSNOW) CALL BUDGET (ZW,NBUDGET_TH,'WETG_BU_RTH')
+      IF (LSNOW) CALL BUDGET (ZW,NBUDGET_TH,'DRYG_BU_RTH')
+      IF (LSNOW) CALL BUDGET (ZW,NBUDGET_TH,'GMLT_BU_RTH')
+      IF (LHAIL) CALL BUDGET (ZW,NBUDGET_TH,'WETH_BU_RTH')
+      IF (LHAIL) CALL BUDGET (ZW,NBUDGET_TH,'HMLT_BU_RTH')
     ENDIF
     IF (LBUDGET_RV) THEN
       ZW(:,:,:) = PRVS(:,:,:)*PRHODJ(:,:,:)
-      IF (LSNOW) CALL BUDGET (ZW,6,'DEPG_BU_RRV')
+      IF (LSNOW) CALL BUDGET (ZW,NBUDGET_RV,'DEPG_BU_RRV')
     ENDIF
     IF (LBUDGET_RC) THEN
       ZW(:,:,:) = PRCS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,7,'IMLT_BU_RRC')
-      CALL BUDGET (ZW,7,'BERFI_BU_RRC')
-      IF (LSNOW) CALL BUDGET (ZW,7,'RIM_BU_RRC')
-      IF (LSNOW) CALL BUDGET (ZW,7,'WETG_BU_RRC')
-      IF (LSNOW) CALL BUDGET (ZW,7,'DRYG_BU_RRC')
-      IF (LHAIL) CALL BUDGET (ZW,7,'WETH_BU_RRC')
+      CALL BUDGET (ZW,NBUDGET_RC,'IMLT_BU_RRC')
+      CALL BUDGET (ZW,NBUDGET_RC,'BERFI_BU_RRC')
+      IF (LSNOW) CALL BUDGET (ZW,NBUDGET_RC,'RIM_BU_RRC')
+      IF (LSNOW) CALL BUDGET (ZW,NBUDGET_RC,'WETG_BU_RRC')
+      IF (LSNOW) CALL BUDGET (ZW,NBUDGET_RC,'DRYG_BU_RRC')
+      IF (LHAIL) CALL BUDGET (ZW,NBUDGET_RC,'WETH_BU_RRC')
     ENDIF
     IF (LBUDGET_RR .AND. LRAIN) THEN
       ZW(:,:,:) = PRRS(:,:,:)*PRHODJ(:,:,:)
-      IF (LSNOW .AND. LRAIN) CALL BUDGET (ZW,8,'ACC_BU_RRR')
-      IF (LSNOW) CALL BUDGET (ZW,8,'CFRZ_BU_RRR')
-      IF (LSNOW) CALL BUDGET (ZW,8,'WETG_BU_RRR')
-      IF (LSNOW) CALL BUDGET (ZW,8,'DRYG_BU_RRR')
-      IF (LSNOW) CALL BUDGET (ZW,8,'GMLT_BU_RRR')
-      IF (LHAIL) CALL BUDGET (ZW,8,'WETH_BU_RRR')
-      IF (LHAIL) CALL BUDGET (ZW,8,'HMLT_BU_RRR')
+      IF (LSNOW .AND. LRAIN) CALL BUDGET (ZW,NBUDGET_RR,'ACC_BU_RRR')
+      IF (LSNOW) CALL BUDGET (ZW,NBUDGET_RR,'CFRZ_BU_RRR')
+      IF (LSNOW) CALL BUDGET (ZW,NBUDGET_RR,'WETG_BU_RRR')
+      IF (LSNOW) CALL BUDGET (ZW,NBUDGET_RR,'DRYG_BU_RRR')
+      IF (LSNOW) CALL BUDGET (ZW,NBUDGET_RR,'GMLT_BU_RRR')
+      IF (LHAIL) CALL BUDGET (ZW,NBUDGET_RR,'WETH_BU_RRR')
+      IF (LHAIL) CALL BUDGET (ZW,NBUDGET_RR,'HMLT_BU_RRR')
     ENDIF
     IF (LBUDGET_RI) THEN
       ZW(:,:,:) = PRIS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,9,'IMLT_BU_RRI')
-      CALL BUDGET (ZW,9,'BERFI_BU_RRI')
-      IF (LSNOW) CALL BUDGET (ZW,9,'HMS_BU_RRI')
-      IF (LSNOW) CALL BUDGET (ZW,9,'CFRZ_BU_RRI')
-      IF (LSNOW) CALL BUDGET (ZW,9,'WETG_BU_RRI')
-      IF (LSNOW) CALL BUDGET (ZW,9,'DRYG_BU_RRI')
-      IF (LSNOW) CALL BUDGET (ZW,9,'HMG_BU_RRI')
-      IF (LHAIL) CALL BUDGET (ZW,9,'WETH_BU_RRI')
+      CALL BUDGET (ZW,NBUDGET_RI,'IMLT_BU_RRI')
+      CALL BUDGET (ZW,NBUDGET_RI,'BERFI_BU_RRI')
+      IF (LSNOW) CALL BUDGET (ZW,NBUDGET_RI,'HMS_BU_RRI')
+      IF (LSNOW) CALL BUDGET (ZW,NBUDGET_RI,'CFRZ_BU_RRI')
+      IF (LSNOW) CALL BUDGET (ZW,NBUDGET_RI,'WETG_BU_RRI')
+      IF (LSNOW) CALL BUDGET (ZW,NBUDGET_RI,'DRYG_BU_RRI')
+      IF (LSNOW) CALL BUDGET (ZW,NBUDGET_RI,'HMG_BU_RRI')
+      IF (LHAIL) CALL BUDGET (ZW,NBUDGET_RI,'WETH_BU_RRI')
     ENDIF
     IF (LBUDGET_RS .AND. LSNOW) THEN
       ZW(:,:,:) = PRSS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,10,'RIM_BU_RRS')
-      CALL BUDGET (ZW,10,'HMS_BU_RRS')
-      IF (LRAIN) CALL BUDGET (ZW,10,'ACC_BU_RRS')
-      CALL BUDGET (ZW,10,'CMEL_BU_RRS')
-      CALL BUDGET (ZW,10,'WETG_BU_RRS')
-      CALL BUDGET (ZW,10,'DRYG_BU_RRS')
-      IF (LHAIL) CALL BUDGET (ZW,10,'WETH_BU_RRS')
+      CALL BUDGET (ZW,NBUDGET_RS,'RIM_BU_RRS')
+      CALL BUDGET (ZW,NBUDGET_RS,'HMS_BU_RRS')
+      IF (LRAIN) CALL BUDGET (ZW,NBUDGET_RS,'ACC_BU_RRS')
+      CALL BUDGET (ZW,NBUDGET_RS,'CMEL_BU_RRS')
+      CALL BUDGET (ZW,NBUDGET_RS,'WETG_BU_RRS')
+      CALL BUDGET (ZW,NBUDGET_RS,'DRYG_BU_RRS')
+      IF (LHAIL) CALL BUDGET (ZW,NBUDGET_RS,'WETH_BU_RRS')
     ENDIF
     IF (LBUDGET_RG .AND. LSNOW) THEN
       ZW(:,:,:) = PRGS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,11,'DEPG_BU_RRG')
-      CALL BUDGET (ZW,11,'RIM_BU_RRG')
-      IF (LRAIN) CALL BUDGET (ZW,11,'ACC_BU_RRG')
-      CALL BUDGET (ZW,11,'CMEL_BU_RRG')
-      CALL BUDGET (ZW,11,'CFRZ_BU_RRG')
-      CALL BUDGET (ZW,11,'WETG_BU_RRG')
-      CALL BUDGET (ZW,11,'DRYG_BU_RRG')
-      CALL BUDGET (ZW,11,'HMG_BU_RRG')
-      CALL BUDGET (ZW,11,'GMLT_BU_RRG')
-      IF (LHAIL) CALL BUDGET (ZW,11,'WETH_BU_RRG')
-      IF (LHAIL) CALL BUDGET (ZW,11,'COHG_BU_RRG')
+      CALL BUDGET (ZW,NBUDGET_RG,'DEPG_BU_RRG')
+      CALL BUDGET (ZW,NBUDGET_RG,'RIM_BU_RRG')
+      IF (LRAIN) CALL BUDGET (ZW,NBUDGET_RG,'ACC_BU_RRG')
+      CALL BUDGET (ZW,NBUDGET_RG,'CMEL_BU_RRG')
+      CALL BUDGET (ZW,NBUDGET_RG,'CFRZ_BU_RRG')
+      CALL BUDGET (ZW,NBUDGET_RG,'WETG_BU_RRG')
+      CALL BUDGET (ZW,NBUDGET_RG,'DRYG_BU_RRG')
+      CALL BUDGET (ZW,NBUDGET_RG,'HMG_BU_RRG')
+      CALL BUDGET (ZW,NBUDGET_RG,'GMLT_BU_RRG')
+      IF (LHAIL) CALL BUDGET (ZW,NBUDGET_RG,'WETH_BU_RRG')
+      IF (LHAIL) CALL BUDGET (ZW,NBUDGET_RG,'COHG_BU_RRG')
     ENDIF
     IF (LBUDGET_RH .AND. LHAIL) THEN
       ZW(:,:,:) = PRHS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,12,'WETG_BU_RRH')
-      IF (LHAIL) CALL BUDGET (ZW,12,'WETH_BU_RRH')
-      IF (LHAIL) CALL BUDGET (ZW,12,'COHG_BU_RRH')
-      IF (LHAIL) CALL BUDGET (ZW,12,'HMLT_BU_RRH')
+      CALL BUDGET (ZW,NBUDGET_RH,'WETG_BU_RRH')
+      IF (LHAIL) CALL BUDGET (ZW,NBUDGET_RH,'WETH_BU_RRH')
+      IF (LHAIL) CALL BUDGET (ZW,NBUDGET_RH,'COHG_BU_RRH')
+      IF (LHAIL) CALL BUDGET (ZW,NBUDGET_RH,'HMLT_BU_RRH')
     ENDIF
     IF (LBUDGET_SV) THEN
       ZW(:,:,:) = PCCS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,12+NSV_LIMA_NC,'IMLT_BU_RSV')
-      IF (LSNOW) CALL BUDGET (ZW,12+NSV_LIMA_NC,'RIM_BU_RSV')
-      IF (LSNOW) CALL BUDGET (ZW,12+NSV_LIMA_NC,'WETG_BU_RSV')
-      IF (LSNOW) CALL BUDGET (ZW,12+NSV_LIMA_NC,'DRYG_BU_RSV')
-      IF (LHAIL) CALL BUDGET (ZW,12+NSV_LIMA_NC,'WETH_BU_RSV')
+      CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_NC,'IMLT_BU_RSV')
+      IF (LSNOW) CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_NC,'RIM_BU_RSV')
+      IF (LSNOW) CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_NC,'WETG_BU_RSV')
+      IF (LSNOW) CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_NC,'DRYG_BU_RSV')
+      IF (LHAIL) CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_NC,'WETH_BU_RSV')
 !
       ZW(:,:,:) = PCRS(:,:,:)*PRHODJ(:,:,:)
-      IF (LSNOW) CALL BUDGET (ZW,12+NSV_LIMA_NR,'ACC_BU_RSV')
-      IF (LSNOW) CALL BUDGET (ZW,12+NSV_LIMA_NR,'CFRZ_BU_RSV')
-      IF (LSNOW) CALL BUDGET (ZW,12+NSV_LIMA_NR,'WETG_BU_RSV')
-      IF (LSNOW) CALL BUDGET (ZW,12+NSV_LIMA_NR,'DRYG_BU_RSV')
-      IF (LSNOW) CALL BUDGET (ZW,12+NSV_LIMA_NR,'GMLT_BU_RSV')
-      IF (LHAIL) CALL BUDGET (ZW,12+NSV_LIMA_NR,'WETH_BU_RSV')
-      IF (LHAIL) CALL BUDGET (ZW,12+NSV_LIMA_NR,'HMLT_BU_RSV')
+      IF (LSNOW) CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_NR,'ACC_BU_RSV')
+      IF (LSNOW) CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_NR,'CFRZ_BU_RSV')
+      IF (LSNOW) CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_NR,'WETG_BU_RSV')
+      IF (LSNOW) CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_NR,'DRYG_BU_RSV')
+      IF (LSNOW) CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_NR,'GMLT_BU_RSV')
+      IF (LHAIL) CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_NR,'WETH_BU_RSV')
+      IF (LHAIL) CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_NR,'HMLT_BU_RSV')
 !
       ZW(:,:,:) = PCIS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,12+NSV_LIMA_NI,'IMLT_BU_RSV')
-      IF (LSNOW) CALL BUDGET (ZW,12+NSV_LIMA_NI,'HMS_BU_RSV')
-      IF (LSNOW) CALL BUDGET (ZW,12+NSV_LIMA_NI,'CFRZ_BU_RSV')
-      IF (LSNOW) CALL BUDGET (ZW,12+NSV_LIMA_NI,'WETG_BU_RSV')
-      IF (LSNOW) CALL BUDGET (ZW,12+NSV_LIMA_NI,'DRYG_BU_RSV')
-      IF (LSNOW) CALL BUDGET (ZW,12+NSV_LIMA_NI,'HMG_BU_RSV')
-      IF (LHAIL) CALL BUDGET (ZW,12+NSV_LIMA_NI,'WETH_BU_RSV')
+      CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_NI,'IMLT_BU_RSV')
+      IF (LSNOW) CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_NI,'HMS_BU_RSV')
+      IF (LSNOW) CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_NI,'CFRZ_BU_RSV')
+      IF (LSNOW) CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_NI,'WETG_BU_RSV')
+      IF (LSNOW) CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_NI,'DRYG_BU_RSV')
+      IF (LSNOW) CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_NI,'HMG_BU_RSV')
+      IF (LHAIL) CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_NI,'WETH_BU_RSV')
     ENDIF
   ENDIF
 !
diff --git a/src/MNH/lima_mixed_fast_processes.f90 b/src/MNH/lima_mixed_fast_processes.f90
index fdb9724bc..09ea55a1b 100644
--- a/src/MNH/lima_mixed_fast_processes.f90
+++ b/src/MNH/lima_mixed_fast_processes.f90
@@ -329,19 +329,19 @@ END IF
 IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
   IF (LBUDGET_TH) CALL BUDGET (                                               &
                  UNPACK(ZTHS(:),MASK=GMICRO(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:), &
-                                                               4,'RIM_BU_RTH')
+                                                      NBUDGET_TH,'RIM_BU_RTH')
   IF (LBUDGET_RC) CALL BUDGET (                                               &
                  UNPACK(ZRCS(:),MASK=GMICRO(:,:,:),FIELD=PRCS)*PRHODJ(:,:,:), &
-                                                               7,'RIM_BU_RRC')
+                                                      NBUDGET_RC,'RIM_BU_RRC')
   IF (LBUDGET_RS) CALL BUDGET (                                               &
                  UNPACK(ZRSS(:),MASK=GMICRO(:,:,:),FIELD=PRSS)*PRHODJ(:,:,:), &
-                                                              10,'RIM_BU_RRS')
+                                                      NBUDGET_RS,'RIM_BU_RRS')
   IF (LBUDGET_RG) CALL BUDGET (                                               &
                  UNPACK(ZRGS(:),MASK=GMICRO(:,:,:),FIELD=PRGS)*PRHODJ(:,:,:), &
-                                                              11,'RIM_BU_RRG')
+                                                      NBUDGET_RG,'RIM_BU_RRG')
   IF (LBUDGET_SV) THEN
     CALL BUDGET (UNPACK(ZCCS(:),MASK=GMICRO(:,:,:),FIELD=PCCS)*PRHODJ(:,:,:), &
-                                                  12+NSV_LIMA_NC,'RIM_BU_RSV')
+                                       NBUDGET_SV1-1+NSV_LIMA_NC,'RIM_BU_RSV')
   END IF
 END IF
 !
@@ -386,13 +386,13 @@ END IF
 IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
   IF (LBUDGET_RI) CALL BUDGET (                                            &
                      UNPACK(ZRIS(:),MASK=GMICRO,FIELD=PRIS)*PRHODJ(:,:,:), &
-                                                               9,'HMS_BU_RRI')
+                                                      NBUDGET_RI,'HMS_BU_RRI')
   IF (LBUDGET_RS) CALL BUDGET (                                            &
                      UNPACK(ZRSS(:),MASK=GMICRO,FIELD=PRSS)*PRHODJ(:,:,:), &
-                                                              10,'HMS_BU_RRS')
+                                                      NBUDGET_RS,'HMS_BU_RRS')
   IF (LBUDGET_SV) CALL BUDGET (                                            &
                      UNPACK(ZCIS(:),MASK=GMICRO,FIELD=PCIS)*PRHODJ(:,:,:), &
-                                                  12+NSV_LIMA_NI,'HMS_BU_RSV')
+                                       NBUDGET_SV1-1+NSV_LIMA_NI,'HMS_BU_RSV')
 END IF
 !
 !
@@ -515,19 +515,19 @@ END IF
 IF (NBUMOD==KMI .AND. LBU_ENABLE .AND. LRAIN) THEN
   IF (LBUDGET_TH) CALL BUDGET (                                              &
                  UNPACK(ZTHS(:),MASK=GMICRO(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),&
-                                                               4,'ACC_BU_RTH')
+                                                      NBUDGET_TH,'ACC_BU_RTH')
   IF (LBUDGET_RR) CALL BUDGET (                                               &
                  UNPACK(ZRRS(:),MASK=GMICRO(:,:,:),FIELD=PRRS)*PRHODJ(:,:,:), &
-                                                               8,'ACC_BU_RRR')
+                                                      NBUDGET_RR,'ACC_BU_RRR')
   IF (LBUDGET_RS) CALL BUDGET (                                               &
                  UNPACK(ZRSS(:),MASK=GMICRO(:,:,:),FIELD=PRSS)*PRHODJ(:,:,:), &
-                                                              10,'ACC_BU_RRS')
+                                                      NBUDGET_RS,'ACC_BU_RRS')
   IF (LBUDGET_RG) CALL BUDGET (                                               &
                  UNPACK(ZRGS(:),MASK=GMICRO(:,:,:),FIELD=PRGS)*PRHODJ(:,:,:), &
-                                                              11,'ACC_BU_RRG')
+                                                      NBUDGET_RG,'ACC_BU_RRG')
   IF (LBUDGET_SV) THEN
     CALL BUDGET (UNPACK(ZCRS(:),MASK=GMICRO(:,:,:),FIELD=PCRS)*PRHODJ(:,:,:), &
-                                                  12+NSV_LIMA_NR,'ACC_BU_RSV')
+                                       NBUDGET_SV1-1+NSV_LIMA_NR,'ACC_BU_RSV')
   END IF
 END IF
 !
@@ -563,10 +563,10 @@ END WHERE
 IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
   IF (LBUDGET_RS) CALL BUDGET (                                                     &
                        UNPACK(ZRSS(:),MASK=GMICRO(:,:,:),FIELD=PRSS)*PRHODJ(:,:,:), &
-                                                               10,'CMEL_BU_RRS')
+                                                            NBUDGET_RS,'CMEL_BU_RRS')
   IF (LBUDGET_RG) CALL BUDGET (                                                     &
                        UNPACK(ZRGS(:),MASK=GMICRO(:,:,:),FIELD=PRGS)*PRHODJ(:,:,:), &
-                                                               11,'CMEL_BU_RRG')
+                                                            NBUDGET_RG,'CMEL_BU_RRG')
 END IF
 !
 END IF ! LSNOW
@@ -603,21 +603,21 @@ END WHERE
 IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
   IF (LBUDGET_TH) CALL BUDGET (                                                 &
                    UNPACK(ZTHS(:),MASK=GMICRO(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:), &
-                                                                4,'CFRZ_BU_RTH')
+                                                        NBUDGET_TH,'CFRZ_BU_RTH')
   IF (LBUDGET_RR) CALL BUDGET (                                                 &
                    UNPACK(ZRRS(:),MASK=GMICRO(:,:,:),FIELD=PRRS)*PRHODJ(:,:,:), &
-                                                                8,'CFRZ_BU_RRR')
+                                                        NBUDGET_RR,'CFRZ_BU_RRR')
   IF (LBUDGET_RI) CALL BUDGET (                                                 &
                    UNPACK(ZRIS(:),MASK=GMICRO(:,:,:),FIELD=PRIS)*PRHODJ(:,:,:), &
-                                                                9,'CFRZ_BU_RRI')
+                                                        NBUDGET_RI,'CFRZ_BU_RRI')
   IF (LBUDGET_RG) CALL BUDGET (                                                 &
                    UNPACK(ZRGS(:),MASK=GMICRO(:,:,:),FIELD=PRGS)*PRHODJ(:,:,:), &
-                                                               11,'CFRZ_BU_RRG')
+                                                        NBUDGET_RG,'CFRZ_BU_RRG')
   IF (LBUDGET_SV) THEN
     CALL BUDGET (  UNPACK(ZCRS(:),MASK=GMICRO(:,:,:),FIELD=PCRS)*PRHODJ(:,:,:), &
-                                                   12+NSV_LIMA_NR,'CFRZ_BU_RSV')
+                                         NBUDGET_SV1-1+NSV_LIMA_NR,'CFRZ_BU_RSV')
     CALL BUDGET (  UNPACK(ZCIS(:),MASK=GMICRO(:,:,:),FIELD=PCIS)*PRHODJ(:,:,:), &
-                                                   12+NSV_LIMA_NI,'CFRZ_BU_RSV')
+                                         NBUDGET_SV1-1+NSV_LIMA_NI,'CFRZ_BU_RSV')
   END IF
 END IF
 !
@@ -839,32 +839,32 @@ END WHERE
    IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
      IF (LBUDGET_TH) CALL BUDGET (                                              &
                     UNPACK(ZTHS(:),MASK=GMICRO(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),&
-                                                                4,'WETG_BU_RTH')
+                                                        NBUDGET_TH,'WETG_BU_RTH')
      IF (LBUDGET_RC) CALL BUDGET (                                               &
                     UNPACK(ZRCS(:),MASK=GMICRO(:,:,:),FIELD=PRCS)*PRHODJ(:,:,:), &
-                                                                7,'WETG_BU_RRC')
+                                                        NBUDGET_RC,'WETG_BU_RRC')
      IF (LBUDGET_RR) CALL BUDGET (                                               &
                     UNPACK(ZRRS(:),MASK=GMICRO(:,:,:),FIELD=PRRS)*PRHODJ(:,:,:), &
-                                                                8,'WETG_BU_RRR')
+                                                        NBUDGET_RR,'WETG_BU_RRR')
      IF (LBUDGET_RI) CALL BUDGET (                                               &
                     UNPACK(ZRIS(:),MASK=GMICRO(:,:,:),FIELD=PRIS)*PRHODJ(:,:,:), &
-                                                                9,'WETG_BU_RRI')
+                                                        NBUDGET_RI,'WETG_BU_RRI')
      IF (LBUDGET_RS) CALL BUDGET (                                               &
                     UNPACK(ZRSS(:),MASK=GMICRO(:,:,:),FIELD=PRSS)*PRHODJ(:,:,:), &
-                                                               10,'WETG_BU_RRS')
+                                                        NBUDGET_RS,'WETG_BU_RRS')
      IF (LBUDGET_RG) CALL BUDGET (                                               &
                     UNPACK(ZRGS(:),MASK=GMICRO(:,:,:),FIELD=PRGS)*PRHODJ(:,:,:), &
-                                                               11,'WETG_BU_RRG')
+                                                        NBUDGET_RG,'WETG_BU_RRG')
      IF (LBUDGET_RH) CALL BUDGET (                                               &
                     UNPACK(ZRHS(:),MASK=GMICRO(:,:,:),FIELD=PRHS)*PRHODJ(:,:,:), &
-                                                               12,'WETG_BU_RRH')
+                                                        NBUDGET_RH,'WETG_BU_RRH')
      IF (LBUDGET_SV) THEN
        CALL BUDGET (UNPACK(ZCCS(:),MASK=GMICRO(:,:,:),FIELD=PCCS)*PRHODJ(:,:,:), &
-                                                               12+NSV_LIMA_NC,'WETG_BU_RSV')
+                                         NBUDGET_SV1-1+NSV_LIMA_NC,'WETG_BU_RSV')
        CALL BUDGET (UNPACK(ZCRS(:),MASK=GMICRO(:,:,:),FIELD=PCRS)*PRHODJ(:,:,:), &
-                                                               12+NSV_LIMA_NR,'WETG_BU_RSV')
+                                         NBUDGET_SV1-1+NSV_LIMA_NR,'WETG_BU_RSV')
        CALL BUDGET (UNPACK(ZCIS(:),MASK=GMICRO(:,:,:),FIELD=PCIS)*PRHODJ(:,:,:), &
-                                                               12+NSV_LIMA_NI,'WETG_BU_RSV')
+                                         NBUDGET_SV1-1+NSV_LIMA_NI,'WETG_BU_RSV')
      END IF
    END IF
 !
@@ -890,29 +890,29 @@ END WHERE
 IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
   IF (LBUDGET_TH) CALL BUDGET (                                                 &
                    UNPACK(ZTHS(:),MASK=GMICRO(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),&
-                                                                4,'DRYG_BU_RTH')
+                                                      NBUDGET_TH,'DRYG_BU_RTH')
   IF (LBUDGET_RC) CALL BUDGET (                                                 &
                    UNPACK(ZRCS(:),MASK=GMICRO(:,:,:),FIELD=PRCS)*PRHODJ(:,:,:), &
-                                                                7,'DRYG_BU_RRC')
+                                                      NBUDGET_RC,'DRYG_BU_RRC')
   IF (LBUDGET_RR) CALL BUDGET (                                                 &
                    UNPACK(ZRRS(:),MASK=GMICRO(:,:,:),FIELD=PRRS)*PRHODJ(:,:,:), &
-                                                                8,'DRYG_BU_RRR')
+                                                      NBUDGET_RR,'DRYG_BU_RRR')
   IF (LBUDGET_RI) CALL BUDGET (                                                 &
                    UNPACK(ZRIS(:),MASK=GMICRO(:,:,:),FIELD=PRIS)*PRHODJ(:,:,:), &
-                                                                9,'DRYG_BU_RRI')
+                                                      NBUDGET_RI,'DRYG_BU_RRI')
   IF (LBUDGET_RS) CALL BUDGET (                                                 &
                    UNPACK(ZRSS(:),MASK=GMICRO(:,:,:),FIELD=PRSS)*PRHODJ(:,:,:), &
-                                                               10,'DRYG_BU_RRS')
+                                                      NBUDGET_RS,'DRYG_BU_RRS')
   IF (LBUDGET_RG) CALL BUDGET (                                                 &
                    UNPACK(ZRGS(:),MASK=GMICRO(:,:,:),FIELD=PRGS)*PRHODJ(:,:,:), &
-                                                               11,'DRYG_BU_RRG')
+                                                      NBUDGET_RG,'DRYG_BU_RRG')
   IF (LBUDGET_SV) THEN
     CALL BUDGET (  UNPACK(ZCCS(:),MASK=GMICRO(:,:,:),FIELD=PCCS)*PRHODJ(:,:,:), &
-                                                               12+NSV_LIMA_NC,'DRYG_BU_RSV')
+                                       NBUDGET_SV1-1+NSV_LIMA_NC,'DRYG_BU_RSV')
     CALL BUDGET (  UNPACK(ZCRS(:),MASK=GMICRO(:,:,:),FIELD=PCRS)*PRHODJ(:,:,:), &
-                                                               12+NSV_LIMA_NR,'DRYG_BU_RSV')
+                                       NBUDGET_SV1-1+NSV_LIMA_NR,'DRYG_BU_RSV')
     CALL BUDGET (  UNPACK(ZCIS(:),MASK=GMICRO(:,:,:),FIELD=PCIS)*PRHODJ(:,:,:), &
-                                                               12+NSV_LIMA_NI,'DRYG_BU_RSV')
+                                       NBUDGET_SV1-1+NSV_LIMA_NI,'DRYG_BU_RSV')
   END IF
 END IF
 !
@@ -956,13 +956,13 @@ END IF
 IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
   IF (LBUDGET_RI) CALL BUDGET (                                               &
                      UNPACK(ZRIS(:),MASK=GMICRO,FIELD=PRIS)*PRHODJ(:,:,:), &
-                                                               9,'HMG_BU_RRI')
+                                                      NBUDGET_RI,'HMG_BU_RRI')
   IF (LBUDGET_RG) CALL BUDGET (                                               &
                      UNPACK(ZRGS(:),MASK=GMICRO,FIELD=PRGS)*PRHODJ(:,:,:), &
-                                                              11,'HMG_BU_RRG')
+                                                      NBUDGET_RG,'HMG_BU_RRG')
   IF (LBUDGET_SV) CALL BUDGET (                                               &
                      UNPACK(ZCIS(:),MASK=GMICRO,FIELD=PCIS)*PRHODJ(:,:,:), &
-                                                              12+NSV_LIMA_NI,'HMG_BU_RSV')
+                                       NBUDGET_SV1-1+NSV_LIMA_NI,'HMG_BU_RSV')
 END IF
 !
 !
@@ -997,16 +997,16 @@ END WHERE
 IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
   IF (LBUDGET_TH) CALL BUDGET (                                                 &
                    UNPACK(ZTHS(:),MASK=GMICRO(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),&
-                                                                4,'GMLT_BU_RTH')
+                                                        NBUDGET_TH,'GMLT_BU_RTH')
   IF (LBUDGET_RR) CALL BUDGET (                                                 &
                    UNPACK(ZRRS(:),MASK=GMICRO(:,:,:),FIELD=PRRS)*PRHODJ(:,:,:), &
-                                                                8,'GMLT_BU_RRR')
+                                                        NBUDGET_RR,'GMLT_BU_RRR')
   IF (LBUDGET_RG) CALL BUDGET (                                                 &
                    UNPACK(ZRGS(:),MASK=GMICRO(:,:,:),FIELD=PRGS)*PRHODJ(:,:,:), &
-                                                               11,'GMLT_BU_RRG')
+                                                        NBUDGET_RG,'GMLT_BU_RRG')
   IF (LBUDGET_SV) THEN
     CALL BUDGET (  UNPACK(ZCRS(:),MASK=GMICRO(:,:,:),FIELD=PCRS)*PRHODJ(:,:,:), &
-                                                               12+NSV_LIMA_NR,'GMLT_BU_RSV')
+                                         NBUDGET_SV1-1+NSV_LIMA_NR,'GMLT_BU_RSV')
   END IF
 END IF
 !
@@ -1216,32 +1216,32 @@ END IF ! IHAIL>0
 IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
    IF (LBUDGET_TH) CALL BUDGET (                                                 &
         UNPACK(ZTHS(:),MASK=GMICRO(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:), &
-        4,'WETH_BU_RTH')
+        NBUDGET_TH,'WETH_BU_RTH')
    IF (LBUDGET_RC) CALL BUDGET (                                                 &
         UNPACK(ZRCS(:),MASK=GMICRO(:,:,:),FIELD=PRCS)*PRHODJ(:,:,:), &
-        7,'WETH_BU_RRC')
+        NBUDGET_RC,'WETH_BU_RRC')
    IF (LBUDGET_RR) CALL BUDGET (                                                 &
         UNPACK(ZRRS(:),MASK=GMICRO(:,:,:),FIELD=PRRS)*PRHODJ(:,:,:), &
-        8,'WETH_BU_RRR')
+        NBUDGET_RR,'WETH_BU_RRR')
    IF (LBUDGET_RI) CALL BUDGET (                                                 &
         UNPACK(ZRIS(:),MASK=GMICRO(:,:,:),FIELD=PRIS)*PRHODJ(:,:,:), &
-        9,'WETH_BU_RRI')
+        NBUDGET_RI,'WETH_BU_RRI')
    IF (LBUDGET_RS) CALL BUDGET (                                                 &
         UNPACK(ZRSS(:),MASK=GMICRO(:,:,:),FIELD=PRSS)*PRHODJ(:,:,:), &
-        10,'WETH_BU_RRS')
+        NBUDGET_RS,'WETH_BU_RRS')
    IF (LBUDGET_RG) CALL BUDGET (                                                 &
         UNPACK(ZRGS(:),MASK=GMICRO(:,:,:),FIELD=PRGS)*PRHODJ(:,:,:), &
-        11,'WETH_BU_RRG')
+        NBUDGET_RG,'WETH_BU_RRG')
    IF (LBUDGET_RH) CALL BUDGET (                                                 &
         UNPACK(ZRHS(:),MASK=GMICRO(:,:,:),FIELD=PRHS)*PRHODJ(:,:,:), &
-        12,'WETH_BU_RRH')
+        NBUDGET_RH,'WETH_BU_RRH')
    IF (LBUDGET_SV) THEN
       CALL BUDGET (UNPACK(ZCCS(:),MASK=GMICRO(:,:,:),FIELD=PCCS)*PRHODJ(:,:,:), &
-           12+NSV_LIMA_NC,'WETH_BU_RSV')
+           NBUDGET_SV1-1+NSV_LIMA_NC,'WETH_BU_RSV')
       CALL BUDGET (UNPACK(ZCRS(:),MASK=GMICRO(:,:,:),FIELD=PCRS)*PRHODJ(:,:,:), &
-           12+NSV_LIMA_NR,'WETH_BU_RSV')
+           NBUDGET_SV1-1+NSV_LIMA_NR,'WETH_BU_RSV')
       CALL BUDGET (UNPACK(ZCIS(:),MASK=GMICRO(:,:,:),FIELD=PCIS)*PRHODJ(:,:,:), &
-           12+NSV_LIMA_NI,'WETH_BU_RSV')
+           NBUDGET_SV1-1+NSV_LIMA_NI,'WETH_BU_RSV')
    END IF
 END IF
 !
@@ -1307,16 +1307,16 @@ END IF
 IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
    IF (LBUDGET_TH) CALL BUDGET (                                                 &
         UNPACK(ZTHS(:),MASK=GMICRO(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),&
-        4,'HMLT_BU_RTH')
+        NBUDGET_TH, 'HMLT_BU_RTH')
    IF (LBUDGET_RR) CALL BUDGET (                                                 &
         UNPACK(ZRRS(:),MASK=GMICRO(:,:,:),FIELD=PRRS)*PRHODJ(:,:,:), &
-        8,'HMLT_BU_RRR')
+        NBUDGET_RR, 'HMLT_BU_RRR')
    IF (LBUDGET_RH) CALL BUDGET (                                                 &
         UNPACK(ZRHS(:),MASK=GMICRO(:,:,:),FIELD=PRHS)*PRHODJ(:,:,:), &
-        12,'HMLT_BU_RRH')
+        NBUDGET_RH, 'HMLT_BU_RRH')
    IF (LBUDGET_SV) THEN
       CALL BUDGET (  UNPACK(ZCRS(:),MASK=GMICRO(:,:,:),FIELD=PCRS)*PRHODJ(:,:,:), &
-           12+NSV_LIMA_NR,'HMLT_BU_RSV')
+           NBUDGET_SV1-1+NSV_LIMA_NR, 'HMLT_BU_RSV')
    END IF
 END IF
 !
diff --git a/src/MNH/lima_mixed_slow_processes.f90 b/src/MNH/lima_mixed_slow_processes.f90
index 7c58f4910..bf559a2b5 100644
--- a/src/MNH/lima_mixed_slow_processes.f90
+++ b/src/MNH/lima_mixed_slow_processes.f90
@@ -1,3 +1,8 @@
+!MNH_LIC Copyright 2013-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
+!MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 !      #####################################
        MODULE MODI_LIMA_MIXED_SLOW_PROCESSES
 !      #####################################
@@ -194,13 +199,13 @@ IF (LSNOW) THEN
    IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
      IF (LBUDGET_TH) CALL BUDGET (                                                 &
                    UNPACK(ZTHS(:),MASK=GMICRO(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),&
-                                                                4,'DEPG_BU_RTH')
+                                                                NBUDGET_TH,'DEPG_BU_RTH')
      IF (LBUDGET_RV) CALL BUDGET (                                                 &
                    UNPACK(ZRVS(:),MASK=GMICRO(:,:,:),FIELD=PRVS)*PRHODJ(:,:,:),&
-                                                                6,'DEPG_BU_RRV')
+                                                                NBUDGET_RV,'DEPG_BU_RRV')
      IF (LBUDGET_RG) CALL BUDGET (                                                 &
                    UNPACK(ZRGS(:),MASK=GMICRO(:,:,:),FIELD=PRGS)*PRHODJ(:,:,:), &
-                                                               11,'DEPG_BU_RRG')
+                                                                NBUDGET_RG,'DEPG_BU_RRG')
   END IF
 END IF
 !
@@ -229,18 +234,18 @@ END IF
    IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
      IF (LBUDGET_TH) CALL BUDGET (                                                 &
                    UNPACK(ZTHS(:),MASK=GMICRO(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),&
-                                                                4,'IMLT_BU_RTH')
+                                                                NBUDGET_TH,'IMLT_BU_RTH')
      IF (LBUDGET_RC) CALL BUDGET (                                                 &
                    UNPACK(ZRCS(:),MASK=GMICRO(:,:,:),FIELD=PRCS)*PRHODJ(:,:,:), &
-                                                                7,'IMLT_BU_RRC')
+                                                                NBUDGET_RC,'IMLT_BU_RRC')
      IF (LBUDGET_RI) CALL BUDGET (                                                 &
                    UNPACK(ZRIS(:),MASK=GMICRO(:,:,:),FIELD=PRIS)*PRHODJ(:,:,:), &
-                                                                9,'IMLT_BU_RRI')
+                                                                NBUDGET_RI,'IMLT_BU_RRI')
      IF (LBUDGET_SV) THEN
        CALL BUDGET (UNPACK(ZCCS(:),MASK=GMICRO(:,:,:),FIELD=PCCS)*PRHODJ(:,:,:), &
-                                                               12+NSV_LIMA_NC,'IMLT_BU_RSV')
+                                                 NBUDGET_SV1-1+NSV_LIMA_NC,'IMLT_BU_RSV')
        CALL BUDGET (UNPACK(ZCIS(:),MASK=GMICRO(:,:,:),FIELD=PCIS)*PRHODJ(:,:,:), &
-                                                               12+NSV_LIMA_NI,'IMLT_BU_RSV')
+                                                 NBUDGET_SV1-1+NSV_LIMA_NI,'IMLT_BU_RSV')
      END IF
    END IF
 !
@@ -265,13 +270,13 @@ END IF
    IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
      IF (LBUDGET_TH) CALL BUDGET (                                                 &
                    UNPACK(ZTHS(:),MASK=GMICRO(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),&
-                                                               4,'BERFI_BU_RTH')
+                                                               NBUDGET_TH,'BERFI_BU_RTH')
      IF (LBUDGET_RC) CALL BUDGET (                                                 &
                    UNPACK(ZRCS(:),MASK=GMICRO(:,:,:),FIELD=PRCS)*PRHODJ(:,:,:), &
-                                                               7,'BERFI_BU_RRC')
+                                                               NBUDGET_RC,'BERFI_BU_RRC')
      IF (LBUDGET_RI) CALL BUDGET (                                                 &
                    UNPACK(ZRIS(:),MASK=GMICRO(:,:,:),FIELD=PRIS)*PRHODJ(:,:,:), &
-                                                               9,'BERFI_BU_RRI')
+                                                               NBUDGET_RI,'BERFI_BU_RRI')
    END IF
 !
 !------------------------------------------------------------------------------
diff --git a/src/MNH/lima_nucleation_procs.f90 b/src/MNH/lima_nucleation_procs.f90
index e3efc478d..f0e61b630 100644
--- a/src/MNH/lima_nucleation_procs.f90
+++ b/src/MNH/lima_nucleation_procs.f90
@@ -72,11 +72,12 @@ SUBROUTINE LIMA_NUCLEATION_PROCS (PTSTEP, TPFILE, OCLOSE_OUT, PRHODJ,
 !!
 !-------------------------------------------------------------------------------
 !
-USE MODD_PARAM_LIMA, ONLY : LCOLD, LNUCL, LMEYERS, LSNOW, LWARM, LACTI, LRAIN, LHHONI, &
+USE MODD_PARAM_LIMA, ONLY : LCOLD, LNUCL, LMEYERS, LSNOW, LWARM, LACTI, LRAIN, LHHONI,  &
                             NMOD_CCN, NMOD_IFN, NMOD_IMM
-USE MODD_BUDGET,     ONLY : LBU_ENABLE, LBUDGET_TH, LBUDGET_RV, LBUDGET_RC, LBUDGET_RR,&
-                            LBUDGET_RI, LBUDGET_RS, LBUDGET_RG, LBUDGET_RH, LBUDGET_SV
-USE MODD_NSV,        ONLY : NSV_LIMA_NC, NSV_LIMA_NR, NSV_LIMA_CCN_FREE,               &
+USE MODD_BUDGET,     ONLY : LBU_ENABLE, LBUDGET_TH, LBUDGET_RV, LBUDGET_RC, LBUDGET_RR, &
+                            LBUDGET_RI, LBUDGET_RS, LBUDGET_RG, LBUDGET_RH, LBUDGET_SV, &
+                            NBUDGET_TH, NBUDGET_RV, NBUDGET_RC, NBUDGET_RI, NBUDGET_SV1
+USE MODD_NSV,        ONLY : NSV_LIMA_NC, NSV_LIMA_NR, NSV_LIMA_CCN_FREE,                &
                             NSV_LIMA_NI, NSV_LIMA_IFN_FREE
 !
 USE MODD_IO,         ONLY: TFILEDATA
@@ -169,13 +170,13 @@ IF (LWARM .AND. LACTI .AND. NMOD_CCN.GE.1) THEN
 ! Call budgets
 !
    IF (LBU_ENABLE) THEN
-      IF (LBUDGET_TH) CALL BUDGET (PTHT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,   4,                        'HENU_BU_RTH')
-      IF (LBUDGET_RV) CALL BUDGET (PRVT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,   6,                        'HENU_BU_RRV')
-      IF (LBUDGET_RC) CALL BUDGET (PRCT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,   7,                        'HENU_BU_RRC')
+      IF (LBUDGET_TH) CALL BUDGET (PTHT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,   NBUDGET_TH,                           'HENU_BU_RTH')
+      IF (LBUDGET_RV) CALL BUDGET (PRVT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,   NBUDGET_RV,                           'HENU_BU_RRV')
+      IF (LBUDGET_RC) CALL BUDGET (PRCT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,   NBUDGET_RC,                           'HENU_BU_RRC')
       IF (LBUDGET_SV) THEN
-                      CALL BUDGET (PCCT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,   12+NSV_LIMA_NC,           'HENU_BU_RSV')
+                      CALL BUDGET (PCCT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,   NBUDGET_SV1-1+NSV_LIMA_NC,            'HENU_BU_RSV')
             DO JL=1, NMOD_CCN
-                      CALL BUDGET (PNFT(:,:,:,JL)*PRHODJ(:,:,:)/PTSTEP,12+NSV_LIMA_CCN_FREE+JL-1,'HENU_BU_RSV') 
+                      CALL BUDGET (PNFT(:,:,:,JL)*PRHODJ(:,:,:)/PTSTEP,NBUDGET_SV1-1+NSV_LIMA_CCN_FREE+JL-1, 'HENU_BU_RSV')
             END DO
       END IF
    END IF
@@ -194,24 +195,24 @@ IF (LCOLD .AND. LNUCL .AND. .NOT.LMEYERS .AND. NMOD_IFN.GE.1) THEN
 ! Call budgets
 !
    IF (LBU_ENABLE) THEN
-      IF (LBUDGET_TH) CALL BUDGET ((PTHT(:,:,:)+Z_TH_HIND(:,:,:))*PRHODJ(:,:,:)/PTSTEP,4,                        'HIND_BU_RTH')
-      IF (LBUDGET_RV) CALL BUDGET ((PRVT(:,:,:)-Z_RI_HIND(:,:,:))*PRHODJ(:,:,:)/PTSTEP,6,                        'HIND_BU_RRV')
-      IF (LBUDGET_RI) CALL BUDGET ((PRIT(:,:,:)+Z_RI_HIND(:,:,:))*PRHODJ(:,:,:)/PTSTEP,9,                        'HIND_BU_RRI')
+      IF (LBUDGET_TH) CALL BUDGET ((PTHT(:,:,:)+Z_TH_HIND(:,:,:))*PRHODJ(:,:,:)/PTSTEP,NBUDGET_TH, 'HIND_BU_RTH')
+      IF (LBUDGET_RV) CALL BUDGET ((PRVT(:,:,:)-Z_RI_HIND(:,:,:))*PRHODJ(:,:,:)/PTSTEP,NBUDGET_RV, 'HIND_BU_RRV')
+      IF (LBUDGET_RI) CALL BUDGET ((PRIT(:,:,:)+Z_RI_HIND(:,:,:))*PRHODJ(:,:,:)/PTSTEP,NBUDGET_RI, 'HIND_BU_RRI')
       IF (LBUDGET_SV) THEN
-                      CALL BUDGET ((PCIT(:,:,:)+Z_CI_HIND(:,:,:))*PRHODJ(:,:,:)/PTSTEP,12+NSV_LIMA_NI,           'HIND_BU_RSV')
+                      CALL BUDGET ((PCIT(:,:,:)+Z_CI_HIND(:,:,:))*PRHODJ(:,:,:)/PTSTEP,NBUDGET_SV1-1+NSV_LIMA_NI, 'HIND_BU_RSV')
          IF (NMOD_IFN.GE.1) THEN
             DO JL=1, NMOD_IFN
-                      CALL BUDGET ((ZIFT(:,:,:,JL))*PRHODJ(:,:,:)/PTSTEP,              12+NSV_LIMA_IFN_FREE+JL-1,'HIND_BU_RSV') 
+                      CALL BUDGET ((ZIFT(:,:,:,JL))*PRHODJ(:,:,:)/PTSTEP,     NBUDGET_SV1-1+NSV_LIMA_IFN_FREE+JL-1,'HIND_BU_RSV')
             END DO
          END IF
       END IF
 !
-      IF (LBUDGET_TH) CALL BUDGET (ZTHT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,4,'HINC_BU_RTH')
-      IF (LBUDGET_RC) CALL BUDGET (ZRCT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,7,'HINC_BU_RRC')
-      IF (LBUDGET_RI) CALL BUDGET (ZRIT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,9,'HINC_BU_RRI')
+      IF (LBUDGET_TH) CALL BUDGET (ZTHT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,NBUDGET_TH,'HINC_BU_RTH')
+      IF (LBUDGET_RC) CALL BUDGET (ZRCT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,NBUDGET_RC,'HINC_BU_RRC')
+      IF (LBUDGET_RI) CALL BUDGET (ZRIT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,NBUDGET_RI,'HINC_BU_RRI')
       IF (LBUDGET_SV) THEN
-         CALL BUDGET (ZCCT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,12+NSV_LIMA_NC,'HINC_BU_RSV')
-         CALL BUDGET (ZCIT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,12+NSV_LIMA_NI,'HINC_BU_RSV')
+         CALL BUDGET (ZCCT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,NBUDGET_SV1-1+NSV_LIMA_NC,'HINC_BU_RSV')
+         CALL BUDGET (ZCIT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,NBUDGET_SV1-1+NSV_LIMA_NI,'HINC_BU_RSV')
       END IF
    END IF
 !
@@ -240,17 +241,17 @@ IF (LCOLD .AND. LNUCL .AND. LMEYERS) THEN
 ! Call budgets
 !
    IF (LBU_ENABLE) THEN
-      IF (LBUDGET_TH) CALL BUDGET ((PTHT(:,:,:)+Z_TH_HIND(:,:,:))*PRHODJ(:,:,:)/PTSTEP,4,             'HIND_BU_RTH')
-      IF (LBUDGET_RV) CALL BUDGET ((PRVT(:,:,:)-Z_RI_HIND(:,:,:))*PRHODJ(:,:,:)/PTSTEP,6,             'HIND_BU_RRV')
-      IF (LBUDGET_RI) CALL BUDGET ((PRIT(:,:,:)+Z_RI_HIND(:,:,:))*PRHODJ(:,:,:)/PTSTEP,9,             'HIND_BU_RRI')
-      IF (LBUDGET_SV) CALL BUDGET ((PCIT(:,:,:)+Z_CI_HIND(:,:,:))*PRHODJ(:,:,:)/PTSTEP,12+NSV_LIMA_NI,'HIND_BU_RSV')
-!
-      IF (LBUDGET_TH) CALL BUDGET (ZTHT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,4,'HINC_BU_RTH')
-      IF (LBUDGET_RC) CALL BUDGET (ZRCT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,7,'HINC_BU_RRC')
-      IF (LBUDGET_RI) CALL BUDGET (ZRIT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,9,'HINC_BU_RRI')
+      IF (LBUDGET_TH) CALL BUDGET ((PTHT(:,:,:)+Z_TH_HIND(:,:,:))*PRHODJ(:,:,:)/PTSTEP,NBUDGET_TH,               'HIND_BU_RTH')
+      IF (LBUDGET_RV) CALL BUDGET ((PRVT(:,:,:)-Z_RI_HIND(:,:,:))*PRHODJ(:,:,:)/PTSTEP,NBUDGET_RV,               'HIND_BU_RRV')
+      IF (LBUDGET_RI) CALL BUDGET ((PRIT(:,:,:)+Z_RI_HIND(:,:,:))*PRHODJ(:,:,:)/PTSTEP,NBUDGET_RI,               'HIND_BU_RRI')
+      IF (LBUDGET_SV) CALL BUDGET ((PCIT(:,:,:)+Z_CI_HIND(:,:,:))*PRHODJ(:,:,:)/PTSTEP,NBUDGET_SV1-1+NSV_LIMA_NI,'HIND_BU_RSV')
+!
+      IF (LBUDGET_TH) CALL BUDGET (ZTHT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,NBUDGET_TH,'HINC_BU_RTH')
+      IF (LBUDGET_RC) CALL BUDGET (ZRCT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,NBUDGET_RC,'HINC_BU_RRC')
+      IF (LBUDGET_RI) CALL BUDGET (ZRIT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,NBUDGET_RI,'HINC_BU_RRI')
       IF (LBUDGET_SV) THEN
-         CALL BUDGET (ZCCT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,12+NSV_LIMA_NC,'HINC_BU_RSV')
-         CALL BUDGET (ZCIT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,12+NSV_LIMA_NI,'HINC_BU_RSV')
+         CALL BUDGET (ZCCT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,NBUDGET_SV1-1+NSV_LIMA_NC,'HINC_BU_RSV')
+         CALL BUDGET (ZCIT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,NBUDGET_SV1-1+NSV_LIMA_NI,'HINC_BU_RSV')
       END IF
    END IF
 !
@@ -273,13 +274,13 @@ IF (LCOLD .AND. LNUCL .AND. LHHONI .AND. NMOD_CCN.GE.1) THEN
 ! Call budgets
 !
    IF (LBU_ENABLE) THEN
-     IF (LBUDGET_TH) CALL BUDGET (ZTHT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,   4,                        'HONH_BU_RTH')
-     IF (LBUDGET_RV) CALL BUDGET (ZRVT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,   6,                        'HONH_BU_RRV')
-     IF (LBUDGET_RI) CALL BUDGET (ZRIT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,   9,                        'HONH_BU_RRI')
+     IF (LBUDGET_TH) CALL BUDGET (ZTHT(:,:,:)*PRHODJ(:,:,:)/PTSTEP, NBUDGET_TH,                            'HONH_BU_RTH')
+     IF (LBUDGET_RV) CALL BUDGET (ZRVT(:,:,:)*PRHODJ(:,:,:)/PTSTEP, NBUDGET_RV,                            'HONH_BU_RRV')
+     IF (LBUDGET_RI) CALL BUDGET (ZRIT(:,:,:)*PRHODJ(:,:,:)/PTSTEP, NBUDGET_RI,                            'HONH_BU_RRI')
      IF (LBUDGET_SV) THEN
-                     CALL BUDGET (ZCIT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,   12+NSV_LIMA_NI,           'HONH_BU_RSV')
+                     CALL BUDGET (ZCIT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,   NBUDGET_SV1-1+NSV_LIMA_NI,           'HONH_BU_RSV')
           DO JL=1, NMOD_CCN
-                     CALL BUDGET (ZNFT(:,:,:,JL)*PRHODJ(:,:,:)/PTSTEP,12+NSV_LIMA_CCN_FREE+JL-1,'HONH_BU_RSV') 
+                     CALL BUDGET (ZNFT(:,:,:,JL)*PRHODJ(:,:,:)/PTSTEP,NBUDGET_SV1-1+NSV_LIMA_CCN_FREE+JL-1,'HONH_BU_RSV')
           END DO
      END IF
   END IF
diff --git a/src/MNH/lima_phillips.f90 b/src/MNH/lima_phillips.f90
index 03af388b7..3f654dc33 100644
--- a/src/MNH/lima_phillips.f90
+++ b/src/MNH/lima_phillips.f90
@@ -470,19 +470,19 @@ END DO
 IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
   IF (LBUDGET_TH) CALL BUDGET (                                              &
                   UNPACK(ZTHS(:),MASK=GNEGT(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),&
-                                                              4,'HIND_BU_RTH')
+                                                              NBUDGET_TH,'HIND_BU_RTH')
   IF (LBUDGET_RV) CALL BUDGET (                                              &
                   UNPACK(ZRVS(:),MASK=GNEGT(:,:,:),FIELD=PRVS)*PRHODJ(:,:,:),&
-                                                              6,'HIND_BU_RRV')
+                                                              NBUDGET_RV,'HIND_BU_RRV')
   IF (LBUDGET_RI) CALL BUDGET (                                              &
                   UNPACK(ZRIS(:),MASK=GNEGT(:,:,:),FIELD=PRIS)*PRHODJ(:,:,:),&
-                                                              9,'HIND_BU_RRI')
+                                                              NBUDGET_RI,'HIND_BU_RRI')
   IF (LBUDGET_SV) THEN
     CALL BUDGET ( UNPACK(ZCIS(:),MASK=GNEGT(:,:,:),FIELD=PCIS)*PRHODJ(:,:,:),&
-                                                       12+NSV_LIMA_NI,'HIND_BU_RSV')
+                                               NBUDGET_SV1-1+NSV_LIMA_NI,'HIND_BU_RSV')
     IF (NMOD_IFN.GE.1) THEN
        DO JL=1, NMOD_IFN
-          CALL BUDGET ( PIFS(:,:,:,JL)*PRHODJ(:,:,:),12+NSV_LIMA_IFN_FREE+JL-1,'HIND_BU_RSV') 
+          CALL BUDGET ( PIFS(:,:,:,JL)*PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_LIMA_IFN_FREE+JL-1,'HIND_BU_RSV')
        END DO
     END IF
   END IF
@@ -540,18 +540,18 @@ END DO
 IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
   IF (LBUDGET_TH) CALL BUDGET (                                                 &
                   UNPACK(ZTHS(:),MASK=GNEGT(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),&
-                                                              4,'HINC_BU_RTH')
+                                                              NBUDGET_TH,'HINC_BU_RTH')
   IF (LBUDGET_RC) CALL BUDGET (                                                 &
                   UNPACK(ZRCS(:),MASK=GNEGT(:,:,:),FIELD=PRCS)*PRHODJ(:,:,:),&
-                                                              7,'HINC_BU_RRC')
+                                                              NBUDGET_RC,'HINC_BU_RRC')
   IF (LBUDGET_RI) CALL BUDGET (                                                 &
                   UNPACK(ZRIS(:),MASK=GNEGT(:,:,:),FIELD=PRIS)*PRHODJ(:,:,:),&
-                                                              9,'HINC_BU_RRI')
+                                                              NBUDGET_RI,'HINC_BU_RRI')
   IF (LBUDGET_SV) THEN
     CALL BUDGET ( UNPACK(ZCCS(:),MASK=GNEGT(:,:,:),FIELD=PCCS)*PRHODJ(:,:,:),&
-                                                       12+NSV_LIMA_NC,'HINC_BU_RSV')
+                                               NBUDGET_SV1-1+NSV_LIMA_NC,'HINC_BU_RSV')
     CALL BUDGET ( UNPACK(ZCIS(:),MASK=GNEGT(:,:,:),FIELD=PCIS)*PRHODJ(:,:,:),&
-                                                       12+NSV_LIMA_NI,'HINC_BU_RSV')
+                                               NBUDGET_SV1-1+NSV_LIMA_NI,'HINC_BU_RSV')
   END IF
 END IF
 !
@@ -627,32 +627,32 @@ ELSE
   IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
     IF (LBUDGET_TH) THEN
       ZW(:,:,:) = PTHS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,4,'HIND_BU_RTH')
-      CALL BUDGET (ZW,4,'HINC_BU_RTH')
+      CALL BUDGET (ZW,NBUDGET_TH,'HIND_BU_RTH')
+      CALL BUDGET (ZW,NBUDGET_TH,'HINC_BU_RTH')
     ENDIF
     IF (LBUDGET_RV) THEN
       ZW(:,:,:) = PRVS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,6,'HIND_BU_RRV')
+      CALL BUDGET (ZW,NBUDGET_RV,'HIND_BU_RRV')
     ENDIF
     IF (LBUDGET_RC) THEN
       ZW(:,:,:) = PRCS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,7,'HINC_BU_RRC')
+      CALL BUDGET (ZW,NBUDGET_RC,'HINC_BU_RRC')
     ENDIF
     IF (LBUDGET_RI) THEN
       ZW(:,:,:) = PRIS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,9,'HIND_BU_RRI')
-      CALL BUDGET (ZW,9,'HINC_BU_RRI')
+      CALL BUDGET (ZW,NBUDGET_RI,'HIND_BU_RRI')
+      CALL BUDGET (ZW,NBUDGET_RI,'HINC_BU_RRI')
     ENDIF
     IF (LBUDGET_SV) THEN
 !print*, 'LBUDGET_SV dans lima_phillips = ', LBUDGET_SV
       ZW(:,:,:) = PCCS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,12+NSV_LIMA_NC,'HINC_BU_RSV')
+      CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_NC,'HINC_BU_RSV')
       ZW(:,:,:) = PCIS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,12+NSV_LIMA_NI,'HIND_BU_RSV')
-      CALL BUDGET (ZW,12+NSV_LIMA_NI,'HINC_BU_RSV')
+      CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_NI,'HIND_BU_RSV')
+      CALL BUDGET (ZW,NBUDGET_SV1-1+NSV_LIMA_NI,'HINC_BU_RSV')
       IF (NMOD_IFN.GE.1) THEN
          DO JL=1, NMOD_IFN
-            CALL BUDGET ( PIFS(:,:,:,JL)*PRHODJ(:,:,:),12+NSV_LIMA_IFN_FREE+JL-1,'HIND_BU_RSV') 
+            CALL BUDGET ( PIFS(:,:,:,JL)*PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_LIMA_IFN_FREE+JL-1,'HIND_BU_RSV')
          END DO
       END IF
     END IF
diff --git a/src/MNH/lima_precip_scavenging.f90 b/src/MNH/lima_precip_scavenging.f90
index 351ee92f0..71de50a5e 100644
--- a/src/MNH/lima_precip_scavenging.f90
+++ b/src/MNH/lima_precip_scavenging.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2013-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -559,13 +559,13 @@ IF (LBUDGET_SV) THEN
    IF (NMOD_CCN.GE.1) THEN
       DO JL=1, NMOD_CCN
          CALL BUDGET ( PRSVS(:,:,:,NSV_LIMA_CCN_FREE+JL-1), &
-              12+NSV_LIMA_CCN_FREE+JL-1,'SCAV_BU_RSV') 
+              NBUDGET_SV1-1+NSV_LIMA_CCN_FREE+JL-1,'SCAV_BU_RSV')
       END DO
    END IF
    IF (NMOD_IFN.GE.1) THEN
       DO JL=1, NMOD_IFN
          CALL BUDGET ( PRSVS(:,:,:,NSV_LIMA_IFN_FREE+JL-1), &
-              12+NSV_LIMA_IFN_FREE+JL-1,'SCAV_BU_RSV') 
+              NBUDGET_SV1-1+NSV_LIMA_IFN_FREE+JL-1,'SCAV_BU_RSV')
       END DO
    END IF
 END IF
diff --git a/src/MNH/lima_warm.f90 b/src/MNH/lima_warm.f90
index 1ac67f3ce..e896e999a 100644
--- a/src/MNH/lima_warm.f90
+++ b/src/MNH/lima_warm.f90
@@ -323,11 +323,11 @@ CALL LIMA_WARM_SEDIMENTATION (OSEDC, KSPLITR, PTSTEP, KMI,  &
                               PINPRC, PINPRR,               &
                               PINPRR3D    )
 !
-IF (LBUDGET_RC .AND. OSEDC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7 ,'SEDI_BU_RRC')
-IF (LBUDGET_RR .AND. ORAIN) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8 ,'SEDI_BU_RRR')
+IF (LBUDGET_RC .AND. OSEDC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC,'SEDI_BU_RRC')
+IF (LBUDGET_RR .AND. ORAIN) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR,'SEDI_BU_RRR')
 IF (LBUDGET_SV) THEN
-  IF (OSEDC) CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NC,'SEDI_BU_RSV')
-  IF (ORAIN) CALL BUDGET (PCRS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NR,'SEDI_BU_RSV')
+  IF (OSEDC) CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_LIMA_NC,'SEDI_BU_RSV')
+  IF (ORAIN) CALL BUDGET (PCRS(:,:,:)*PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_LIMA_NR,'SEDI_BU_RSV')
 END IF
 !
 ! 2.bis Deposition at 1st level above ground
@@ -343,8 +343,8 @@ IF (LDEPOC) THEN
      PINDEP(:,:) = XVDEPOC * PRCT(:,:,2) *  PRHODREF(:,:,2) /XRHOLW
   END WHERE
 !
-  IF ( LBUDGET_RC ) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7             ,'DEPO_BU_RRC')
-  IF ( LBUDGET_SV ) CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NC,'DEPO_BU_RSV') 
+  IF ( LBUDGET_RC ) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC,                'DEPO_BU_RRC')
+  IF ( LBUDGET_SV ) CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NC, 'DEPO_BU_RSV')
 END IF
 ! 
 !-------------------------------------------------------------------------------
@@ -360,13 +360,13 @@ IF (LACTI .AND. NMOD_CCN.GE.1) THEN
                         PRCM, PRVT, PRCT, PRRT,                          &
                         PTHS, PRVS, PRCS, PCCS, PNFS, PNAS               )
 !
-   IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'HENU_BU_RTH')
-   IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),6,'HENU_BU_RRV')
-   IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7,'HENU_BU_RRC')
+   IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'HENU_BU_RTH')
+   IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RV,'HENU_BU_RRV')
+   IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RC,'HENU_BU_RRC')
    IF (LBUDGET_SV) THEN
-      CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NC,'HENU_BU_RSV') ! RCN
+      CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_LIMA_NC,'HENU_BU_RSV') ! RCN
          DO JL=1, NMOD_CCN
-            CALL BUDGET ( PNFS(:,:,:,JL)*PRHODJ(:,:,:),12+NSV_LIMA_CCN_FREE+JL-1,'HENU_BU_RSV') 
+            CALL BUDGET ( PNFS(:,:,:,JL)*PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_LIMA_CCN_FREE+JL-1,'HENU_BU_RSV')
          END DO
    END IF
 !
@@ -401,12 +401,12 @@ IF (ORAIN) THEN
                         PRVS, PRCS, PRRS, PCCS, PCRS, PTHS,         &
                         PEVAP3D                                     )
 !
-   IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),6 ,'REVA_BU_RRV')
-   IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7 ,'REVA_BU_RRC')
-   IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8 ,'REVA_BU_RRR')
-   IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4 ,'REVA_BU_RTH')
-   IF (LBUDGET_SV) CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NC,'REVA_BU_RSV')
-   IF (LBUDGET_SV) CALL BUDGET (PCRS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NR,'REVA_BU_RSV')
+   IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RV,'REVA_BU_RRV')
+   IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC,'REVA_BU_RRC')
+   IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR,'REVA_BU_RRR')
+   IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH,'REVA_BU_RTH')
+   IF (LBUDGET_SV) CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_LIMA_NC,'REVA_BU_RSV')
+   IF (LBUDGET_SV) CALL BUDGET (PCRS(:,:,:)*PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_LIMA_NR,'REVA_BU_RSV')
 !
 !
 !-------------------------------------------------------------------------------
@@ -426,7 +426,7 @@ IF (ORAIN) THEN
 !
 ! Budget storage
    IF (LBUDGET_SV) &
-      CALL BUDGET (PCRS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NR,&
+      CALL BUDGET (PCRS(:,:,:)*PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_LIMA_NR,&
                     &'BRKU_BU_RSV') 
 
 !
diff --git a/src/MNH/lima_warm_coal.f90 b/src/MNH/lima_warm_coal.f90
index aaae2a04b..ff32fb829 100644
--- a/src/MNH/lima_warm_coal.f90
+++ b/src/MNH/lima_warm_coal.f90
@@ -262,7 +262,7 @@ IF (LRAIN) THEN
   ZW(:,:,:) = PCCS(:,:,:)
   IF (LBUDGET_SV) CALL BUDGET (                                 &
                    UNPACK(ZCCS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:))&
-                   &*PRHODJ(:,:,:),12+NSV_LIMA_NC,'SELF_BU_RSV') 
+                   &*PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_LIMA_NC,'SELF_BU_RSV')
 !
 !
 !-------------------------------------------------------------------------------
@@ -297,20 +297,20 @@ IF (LRAIN) THEN
    ZW(:,:,:) = PRCS(:,:,:)
    IF (LBUDGET_RC) CALL BUDGET (                                  &
                UNPACK(ZRCS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:)) &
-                            *PRHODJ(:,:,:),7 ,'AUTO_BU_RRC')
+                            *PRHODJ(:,:,:), NBUDGET_RC,'AUTO_BU_RRC')
 
    ZW(:,:,:) = PRRS(:,:,:)
    IF (LBUDGET_RR) CALL BUDGET (                                  &
                UNPACK(ZRRS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:)) &
-                            *PRHODJ(:,:,:),8 ,'AUTO_BU_RRR')
+                            *PRHODJ(:,:,:), NBUDGET_RR,'AUTO_BU_RRR')
    ZW(:,:,:) = PCRS(:,:,:)
    IF (LBUDGET_SV) THEN
       ZW(:,:,:) = PCRS(:,:,:)
       CALL BUDGET (UNPACK(ZCRS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:)) &
-               *PRHODJ(:,:,:),12+NSV_LIMA_NR,'AUTO_BU_RSV')
+               *PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_LIMA_NR,'AUTO_BU_RSV')
       ZW(:,:,:) = PCCS(:,:,:)
       CALL BUDGET (UNPACK(ZCCS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:)) &
-               *PRHODJ(:,:,:),12+NSV_LIMA_NC,'AUTO_BU_RSV')
+               *PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_LIMA_NC,'AUTO_BU_RSV')
    END IF
 !
 !
@@ -364,15 +364,15 @@ IF (LRAIN) THEN
    ZW(:,:,:) = PRCS(:,:,:)
    IF (LBUDGET_RC) CALL BUDGET (                                  &
                UNPACK(ZRCS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:)) &
-                              *PRHODJ(:,:,:),7 ,'ACCR_BU_RRC')
+                              *PRHODJ(:,:,:), NBUDGET_RC,'ACCR_BU_RRC')
    ZW(:,:,:) = PRRS(:,:,:)
    IF (LBUDGET_RR) CALL BUDGET (                                  &
                UNPACK(ZRRS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:)) &
-                              *PRHODJ(:,:,:),8 ,'ACCR_BU_RRR')
+                              *PRHODJ(:,:,:), NBUDGET_RR,'ACCR_BU_RRR')
    ZW(:,:,:) = PCCS(:,:,:)
    IF (LBUDGET_SV) CALL BUDGET (                                  &
                UNPACK(ZCCS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:)) &
-                  *PRHODJ(:,:,:),12+NSV_LIMA_NC,'ACCR_BU_RSV')
+                  *PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_LIMA_NC,'ACCR_BU_RSV')
 !
 !
 !-------------------------------------------------------------------------------
@@ -422,7 +422,7 @@ IF (LRAIN) THEN
    ZW(:,:,:) = PCRS(:,:,:)
    IF (LBUDGET_SV) CALL BUDGET (                                  &
                UNPACK(ZCRS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:)) &
-                  *PRHODJ(:,:,:),12+NSV_LIMA_NR,'SCBU_BU_RSV')
+                  *PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_LIMA_NR,'SCBU_BU_RSV')
 !
 END IF ! LRAIN
 !
@@ -473,18 +473,18 @@ ELSE
 !        ------------------------
 !
 !
-   IF (LBUDGET_SV .AND. LRAIN) CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NC,'SELF_BU_RSV')
+   IF (LBUDGET_SV .AND. LRAIN) CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NC, 'SELF_BU_RSV')
 !
-   IF (LBUDGET_RC .AND. LRAIN) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7 ,'AUTO_BU_RRC')
-   IF (LBUDGET_RR .AND. LRAIN) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8 ,'AUTO_BU_RRR')
-   IF (LBUDGET_SV .AND. LRAIN) CALL BUDGET (PCRS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NR,'AUTO_BU_RSV')
-   IF (LBUDGET_SV .AND. LRAIN) CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NC,'AUTO_BU_RSV')
+   IF (LBUDGET_RC .AND. LRAIN) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC,                'AUTO_BU_RRC')
+   IF (LBUDGET_RR .AND. LRAIN) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR,                'AUTO_BU_RRR')
+   IF (LBUDGET_SV .AND. LRAIN) CALL BUDGET (PCRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NR, 'AUTO_BU_RSV')
+   IF (LBUDGET_SV .AND. LRAIN) CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NC, 'AUTO_BU_RSV')
 !
-   IF (LBUDGET_RC .AND. LRAIN) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7 ,'ACCR_BU_RRC')
-   IF (LBUDGET_RR .AND. LRAIN) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8 ,'ACCR_BU_RRR')
-   IF (LBUDGET_SV .AND. LRAIN) CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NC,'ACCR_BU_RSV')
+   IF (LBUDGET_RC .AND. LRAIN) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC,                'ACCR_BU_RRC')
+   IF (LBUDGET_RR .AND. LRAIN) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR,                'ACCR_BU_RRR')
+   IF (LBUDGET_SV .AND. LRAIN) CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NC, 'ACCR_BU_RSV')
 !
-   IF (LBUDGET_SV .AND. LRAIN) CALL BUDGET (PCRS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NR,'SCBU_BU_RSV')
+   IF (LBUDGET_SV .AND. LRAIN) CALL BUDGET (PCRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_LIMA_NR, 'SCBU_BU_RSV')
 
 END IF ! IMICRO
 !
diff --git a/src/MNH/mpdata.f90 b/src/MNH/mpdata.f90
index 961d2d98a..a0e2c921d 100644
--- a/src/MNH/mpdata.f90
+++ b/src/MNH/mpdata.f90
@@ -164,6 +164,7 @@ REAL, DIMENSION(SIZE(PRUCT,1),SIZE(PRUCT,2),SIZE(PRUCT,3)):: ZFADVV  !  budget
 REAL, DIMENSION(SIZE(PRUCT,1),SIZE(PRUCT,2),SIZE(PRUCT,3)):: ZFADVW  ! purpose
 REAL, DIMENSION(SIZE(PRUCT,1),SIZE(PRUCT,2),SIZE(PRUCT,3)):: ZRVARS  !   only
 !
+integer,            dimension(7)                          :: irx
 CHARACTER (LEN=3) , DIMENSION(7)                          :: YRX
 CHARACTER (LEN=20)                                        :: YBURX
 LOGICAL           , DIMENSION(7)                          :: LBUDGET_R
@@ -197,6 +198,13 @@ LBUDGET_R(5) = LBUDGET_RS
 LBUDGET_R(6) = LBUDGET_RG
 LBUDGET_R(7) = LBUDGET_RH
 !
+irx(1) = NBUDGET_RV
+irx(2) = NBUDGET_RC
+irx(3) = NBUDGET_RR
+irx(4) = NBUDGET_RI
+irx(5) = NBUDGET_RS
+irx(6) = NBUDGET_RG
+irx(7) = NBUDGET_RH
 !
 !-------------------------------------------------------------------------------
 !
@@ -263,11 +271,11 @@ LBUDGET_R(7) = LBUDGET_RH
 !
   IF (LBUDGET_TH)  THEN
     ZRVARS(:,:,:) = ZRVARS(:,:,:) + ZFADVU(:,:,:)
-    CALL BUDGET (ZRVARS,4,'ADVX_BU_RTH')
+    CALL BUDGET (ZRVARS,NBUDGET_TH,'ADVX_BU_RTH')
     ZRVARS(:,:,:) = ZRVARS(:,:,:) + ZFADVV(:,:,:)
-    CALL BUDGET (ZRVARS,4,'ADVY_BU_RTH')
+    CALL BUDGET (ZRVARS,NBUDGET_TH,'ADVY_BU_RTH')
     ZRVARS(:,:,:) = ZRVARS(:,:,:) + ZFADVW(:,:,:)
-    CALL BUDGET (ZRVARS,4,'ADVZ_BU_RTH')
+    CALL BUDGET (ZRVARS,NBUDGET_TH,'ADVZ_BU_RTH')
   END IF
 !
 !-------------------------------------------------------------------------------
@@ -327,13 +335,13 @@ LBUDGET_R(7) = LBUDGET_RH
     IF (LBUDGET_R(JRR)) THEN
       ZRVARS(:,:,:) = ZRVARS(:,:,:) + ZFADVU(:,:,:)
       YBURX = 'ADVX_BU_'//YRX(JRR)
-      CALL BUDGET (ZRVARS(:,:,:),JRR+5 ,YBURX)
+      CALL BUDGET (ZRVARS(:,:,:), irx(jrr ), YBURX)
       ZRVARS(:,:,:) = ZRVARS(:,:,:) + ZFADVV(:,:,:)
       YBURX = 'ADVY_BU_'//YRX(JRR)
-      CALL BUDGET (ZRVARS(:,:,:),JRR+5 ,YBURX)
+      CALL BUDGET (ZRVARS(:,:,:), irx(jrr ), YBURX)
       ZRVARS(:,:,:) = ZRVARS(:,:,:) + ZFADVW(:,:,:)
       YBURX = 'ADVZ_BU_'//YRX(JRR)
-      CALL BUDGET (ZRVARS(:,:,:),JRR+5 ,YBURX)
+      CALL BUDGET (ZRVARS(:,:,:), irx(jrr ), YBURX)
     END IF
   END DO
 !
@@ -393,11 +401,11 @@ LBUDGET_R(7) = LBUDGET_RH
 !  
     IF (LBUDGET_TKE)  THEN
       ZRVARS(:,:,:) = ZRVARS(:,:,:) + ZFADVU(:,:,:)
-      CALL BUDGET (ZRVARS,5,'ADVX_BU_RTKE')
+      CALL BUDGET (ZRVARS,NBUDGET_TKE,'ADVX_BU_RTKE')
       ZRVARS(:,:,:) = ZRVARS(:,:,:) + ZFADVV(:,:,:)
-      CALL BUDGET (ZRVARS,5,'ADVY_BU_RTKE')
+      CALL BUDGET (ZRVARS,NBUDGET_TKE,'ADVY_BU_RTKE')
       ZRVARS(:,:,:) = ZRVARS(:,:,:) + ZFADVW(:,:,:)
-      CALL BUDGET (ZRVARS,5,'ADVZ_BU_RTKE')
+      CALL BUDGET (ZRVARS,NBUDGET_TKE,'ADVZ_BU_RTKE')
     END IF
   END IF
 !
diff --git a/src/MNH/mpdata_scalar.f90 b/src/MNH/mpdata_scalar.f90
index ae29c69b0..6214a8c3e 100644
--- a/src/MNH/mpdata_scalar.f90
+++ b/src/MNH/mpdata_scalar.f90
@@ -236,11 +236,11 @@ IKU=SIZE(PSVM,3)
 !
     IF (LBUDGET_SV)  THEN
       ZRVARS(:,:,:) = ZRVARS(:,:,:) + ZFADVU(:,:,:)
-      CALL BUDGET (ZRVARS,JSV+12,'ADVX_BU_RSV')
+      CALL BUDGET (ZRVARS,NBUDGET_SV1-1+JSV,'ADVX_BU_RSV')
       ZRVARS(:,:,:) = ZRVARS(:,:,:) + ZFADVV(:,:,:)
-      CALL BUDGET (ZRVARS,JSV+12,'ADVY_BU_RSV')
+      CALL BUDGET (ZRVARS,NBUDGET_SV1-1+JSV,'ADVY_BU_RSV')
       ZRVARS(:,:,:) = ZRVARS(:,:,:) + ZFADVW(:,:,:)
-      CALL BUDGET (ZRVARS,JSV+12,'ADVZ_BU_RSV')
+      CALL BUDGET (ZRVARS,NBUDGET_SV1-1+JSV,'ADVZ_BU_RSV')
     END IF
 !
   END DO
diff --git a/src/MNH/nudging.f90 b/src/MNH/nudging.f90
index 78f0d7894..28d18b0e8 100644
--- a/src/MNH/nudging.f90
+++ b/src/MNH/nudging.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2006-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 newsrc 2006/05/24 18:05:52
-!-----------------------------------------------------------------
 !     ###################
       MODULE MODI_NUDGING
 !     ###################
@@ -129,10 +124,10 @@ IF (OUSERV) &
 !*       2.     BUDGET CALLS
 !   	        ------------
 !
-IF (LBUDGET_U)   CALL BUDGET (PRUS,1,'NUD_BU_RU')
-IF (LBUDGET_V)   CALL BUDGET (PRVS,2,'NUD_BU_RV')
-IF (LBUDGET_W)   CALL BUDGET (PRWS,3,'NUD_BU_RW')
-IF (LBUDGET_TH)  CALL BUDGET (PRTHS,4,'NUD_BU_RTH')
-IF (LBUDGET_RV)  CALL BUDGET (PRRS(:,:,:,1),6,'NUD_BU_RRV')
+IF (LBUDGET_U)   CALL BUDGET (PRUS,NBUDGET_U,'NUD_BU_RU')
+IF (LBUDGET_V)   CALL BUDGET (PRVS,NBUDGET_V,'NUD_BU_RV')
+IF (LBUDGET_W)   CALL BUDGET (PRWS,NBUDGET_W,'NUD_BU_RW')
+IF (LBUDGET_TH)  CALL BUDGET (PRTHS,NBUDGET_TH,'NUD_BU_RTH')
+IF (LBUDGET_RV)  CALL BUDGET (PRRS(:,:,:,1),NBUDGET_RV,'NUD_BU_RRV')
 !
 END SUBROUTINE NUDGING
diff --git a/src/MNH/num_diff.f90 b/src/MNH/num_diff.f90
index 23751bff8..800f23a1b 100644
--- a/src/MNH/num_diff.f90
+++ b/src/MNH/num_diff.f90
@@ -440,21 +440,21 @@ END IF
 !*       3.     STORES FIELDS IN BUDGET ARRAYS
 !           ------------------------------
 !
-IF (LBUDGET_U .AND. ONUMDIFU )   CALL BUDGET (PRUS,1,'DIF_BU_RU')
-IF (LBUDGET_V .AND. ONUMDIFU )   CALL BUDGET (PRVS,2,'DIF_BU_RV')
-IF (LBUDGET_W .AND. ONUMDIFU )   CALL BUDGET (PRWS,3,'DIF_BU_RW')
-IF (LBUDGET_TH .AND. ONUMDIFTH )  CALL BUDGET (PRTHS,4,'DIF_BU_RTH')
-IF (LBUDGET_TKE .AND. ONUMDIFTH ) CALL BUDGET (PRTKES,5,'DIF_BU_RTKE')
-IF (LBUDGET_RV .AND. ONUMDIFTH )  CALL BUDGET (PRRS(:,:,:,1),6,'DIF_BU_RRV')
-IF (LBUDGET_RC .AND. ONUMDIFTH )  CALL BUDGET (PRRS(:,:,:,2),7,'DIF_BU_RRC')
-IF (LBUDGET_RR .AND. ONUMDIFTH )  CALL BUDGET (PRRS(:,:,:,3),8,'DIF_BU_RRR')
-IF (LBUDGET_RI .AND. ONUMDIFTH )  CALL BUDGET (PRRS(:,:,:,4),9,'DIF_BU_RRI')
-IF (LBUDGET_RS .AND. ONUMDIFTH )  CALL BUDGET (PRRS(:,:,:,5),10,'DIF_BU_RRS')
-IF (LBUDGET_RG .AND. ONUMDIFTH )  CALL BUDGET (PRRS(:,:,:,6),11,'DIF_BU_RRG')
-IF (LBUDGET_RH .AND. ONUMDIFTH )  CALL BUDGET (PRRS(:,:,:,7),12,'DIF_BU_RRH')
-IF (LBUDGET_SV .AND. ONUMDIFSV ) THEN
+IF ( LBUDGET_U   .AND. ONUMDIFU  ) CALL BUDGET( PRUS,              NBUDGET_U,   'DIF_BU_RU'   )
+IF ( LBUDGET_V   .AND. ONUMDIFU  ) CALL BUDGET( PRVS,              NBUDGET_V,   'DIF_BU_RV'   )
+IF ( LBUDGET_W   .AND. ONUMDIFU  ) CALL BUDGET( PRWS,              NBUDGET_W,   'DIF_BU_RW'   )
+IF ( LBUDGET_TH  .AND. ONUMDIFTH ) CALL BUDGET( PRTHS,             NBUDGET_TH,  'DIF_BU_RTH'  )
+IF ( LBUDGET_TKE .AND. ONUMDIFTH ) CALL BUDGET( PRTKES,            NBUDGET_TKE, 'DIF_BU_RTKE' )
+IF ( LBUDGET_RV  .AND. ONUMDIFTH ) CALL BUDGET( PRRS(:, :, :, 1 ), NBUDGET_RV,  'DIF_BU_RRV'  )
+IF ( LBUDGET_RC  .AND. ONUMDIFTH ) CALL BUDGET( PRRS(:, :, :, 2 ), NBUDGET_RC,  'DIF_BU_RRC'  )
+IF ( LBUDGET_RR  .AND. ONUMDIFTH ) CALL BUDGET( PRRS(:, :, :, 3 ), NBUDGET_RR,  'DIF_BU_RRR'  )
+IF ( LBUDGET_RI  .AND. ONUMDIFTH ) CALL BUDGET( PRRS(:, :, :, 4 ), NBUDGET_RI,  'DIF_BU_RRI'  )
+IF ( LBUDGET_RS  .AND. ONUMDIFTH ) CALL BUDGET( PRRS(:, :, :, 5 ), NBUDGET_RS,  'DIF_BU_RRS'  )
+IF ( LBUDGET_RG  .AND. ONUMDIFTH ) CALL BUDGET( PRRS(:, :, :, 6 ), NBUDGET_RG,  'DIF_BU_RRG'  )
+IF ( LBUDGET_RH  .AND. ONUMDIFTH ) CALL BUDGET( PRRS(:, :, :, 7 ), NBUDGET_RH,  'DIF_BU_RRH'  )
+IF ( LBUDGET_SV  .AND. ONUMDIFSV ) THEN
   DO JSV=1,KSV
-    CALL BUDGET (PRSVS(:,:,:,JSV),JSV+12,'DIF_BU_RSV')
+    CALL BUDGET( PRSVS(:, :, :, JSV ), NBUDGET_SV1 - 1 + JSV, 'DIF_BU_RSV' )
   END DO
 END IF
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/phys_paramn.f90 b/src/MNH/phys_paramn.f90
index bedad9dde..e9beceaa3 100644
--- a/src/MNH/phys_paramn.f90
+++ b/src/MNH/phys_paramn.f90
@@ -789,7 +789,7 @@ END IF
 !*        1.6   budget storage
 !               --------------
 !
-IF (CRAD/='NONE' .AND. LBUDGET_TH) CALL BUDGET (XRTHS,4,'RAD_BU_RTH')
+IF (CRAD/='NONE' .AND. LBUDGET_TH) CALL BUDGET (XRTHS,NBUDGET_TH,'RAD_BU_RTH')
 !
 CALL SECOND_MNH2(ZTIME2)
 !
@@ -1050,13 +1050,13 @@ END IF
 !  budget storage
 !
 IF (CDCONV == 'KAFR' .OR. CSCONV == 'KAFR' ) THEN
-  IF (LBUDGET_TH) CALL BUDGET (XRTHS,4,'DCONV_BU_RTH')
-  IF (LBUDGET_RV) CALL BUDGET (XRRS(:,:,:,1),6,'DCONV_BU_RRV')
-  IF (LBUDGET_RC) CALL BUDGET (XRRS(:,:,:,2),7,'DCONV_BU_RRC')
-  IF (LBUDGET_RI) CALL BUDGET (XRRS(:,:,:,4),9,'DCONV_BU_RRI')
+  IF (LBUDGET_TH) CALL BUDGET (XRTHS,NBUDGET_TH,'DCONV_BU_RTH')
+  IF (LBUDGET_RV) CALL BUDGET (XRRS(:,:,:,1),NBUDGET_RV,'DCONV_BU_RRV')
+  IF (LBUDGET_RC) CALL BUDGET (XRRS(:,:,:,2),NBUDGET_RC,'DCONV_BU_RRC')
+  IF (LBUDGET_RI) CALL BUDGET (XRRS(:,:,:,4),NBUDGET_RI,'DCONV_BU_RRI')
   IF (LCHTRANS .AND. LBUDGET_SV) THEN
     DO JSV = 1, SIZE(XRSVS,4)
-      CALL BUDGET (XRSVS(:,:,:,JSV),JSV+12,'DCONV_BU_RSV')
+      CALL BUDGET (XRSVS(:,:,:,JSV),NBUDGET_SV1-1+JSV,'DCONV_BU_RSV')
     END DO
   END IF
 END IF
diff --git a/src/MNH/pressure.f90 b/src/MNH/pressure.f90
index 0ec507eec..c84dfaf95 100644
--- a/src/MNH/pressure.f90
+++ b/src/MNH/pressure.f90
@@ -610,9 +610,9 @@ ENDIF
 !*       7.    STORAGE OF THE FIELDS IN BUDGET ARRAYS
 !              --------------------------------------
 !
-IF (LBUDGET_U) CALL BUDGET (PRUS,1,'PRES_BU_RU')
-IF (LBUDGET_V) CALL BUDGET (PRVS,2,'PRES_BU_RV')
-IF (LBUDGET_W) CALL BUDGET (PRWS,3,'PRES_BU_RW')
+IF (LBUDGET_U) CALL BUDGET (PRUS,NBUDGET_U,'PRES_BU_RU')
+IF (LBUDGET_V) CALL BUDGET (PRVS,NBUDGET_V,'PRES_BU_RV')
+IF (LBUDGET_W) CALL BUDGET (PRWS,NBUDGET_W,'PRES_BU_RW')
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/pressurez.f90 b/src/MNH/pressurez.f90
index b4c3096c3..976f428bd 100644
--- a/src/MNH/pressurez.f90
+++ b/src/MNH/pressurez.f90
@@ -677,9 +677,9 @@ ENDIF
 !*       7.    STORAGE OF THE FIELDS IN BUDGET ARRAYS
 !              --------------------------------------
 !
-IF (LBUDGET_U) CALL BUDGET (PRUS,1,'PRES_BU_RU')
-IF (LBUDGET_V) CALL BUDGET (PRVS,2,'PRES_BU_RV')
-IF (LBUDGET_W) CALL BUDGET (PRWS,3,'PRES_BU_RW')
+IF (LBUDGET_U) CALL BUDGET (PRUS,NBUDGET_U,'PRES_BU_RU')
+IF (LBUDGET_V) CALL BUDGET (PRVS,NBUDGET_V,'PRES_BU_RV')
+IF (LBUDGET_W) CALL BUDGET (PRWS,NBUDGET_W,'PRES_BU_RW')
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/rain_c2r2_khko.f90 b/src/MNH/rain_c2r2_khko.f90
index 070607530..cc4ef656d 100644
--- a/src/MNH/rain_c2r2_khko.f90
+++ b/src/MNH/rain_c2r2_khko.f90
@@ -515,7 +515,7 @@ IF (ORAIN) THEN
 ENDIF
 !
 IF (LBUDGET_SV) &         
-  CALL BUDGET (PCRS(:,:,:)*PRHODJ(:,:,:),15+(NSV_C2R2BEG-1),&
+  CALL BUDGET (PCRS(:,:,:)*PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_C2R2BEG+2,&
                     &'BRKU_BU_RSV') ! RCR
             
 !-------------------------------------------------------------------------------
@@ -888,12 +888,12 @@ END IF
 !
 !*       3.4   budget storage
 !
-IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'HENU_BU_RTH')
-IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),6,'HENU_BU_RRV')
-IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7,'HENU_BU_RRC')
+IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'HENU_BU_RTH')
+IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RV,'HENU_BU_RRV')
+IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RC,'HENU_BU_RRC')
 IF (LBUDGET_SV) THEN
-  CALL BUDGET (PCNS(:,:,:)*PRHODJ(:,:,:),13+(NSV_C2R2BEG-1),'HENU_BU_RSV') ! RCN
-  CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),14+(NSV_C2R2BEG-1),'HENU_BU_RSV') ! RCC
+  CALL BUDGET (PCNS(:,:,:)*PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_C2R2BEG,  'HENU_BU_RSV') ! RCN
+  CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_C2R2BEG+2,'HENU_BU_RSV') ! RCC
 END IF
 !
 END SUBROUTINE C2R2_KHKO_NUCLEATION
@@ -1088,12 +1088,12 @@ END IF
 !*             budget storage
 !
 !
-IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'HENU_BU_RTH')
-IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),6,'HENU_BU_RRV')
-IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7,'HENU_BU_RRC')
+IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'HENU_BU_RTH')
+IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RV,'HENU_BU_RRV')
+IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RC,'HENU_BU_RRC')
 IF (LBUDGET_SV) THEN
-  CALL BUDGET (PCNS(:,:,:)*PRHODJ(:,:,:),13+(NSV_C2R2BEG-1),'HENU_BU_RSV') ! RCN
-  CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),14+(NSV_C2R2BEG-1),'HENU_BU_RSV') ! RCC
+  CALL BUDGET (PCNS(:,:,:)*PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_C2R2BEG,  'HENU_BU_RSV') ! RCN
+  CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_C2R2BEG+1,'HENU_BU_RSV') ! RCC
 END IF
 
   END SUBROUTINE AER_NUCLEATION
@@ -1175,7 +1175,7 @@ IF( IMICRO >= 1 ) THEN
   ZW(:,:,:) = PCCS(:,:,:)
   IF (LBUDGET_SV) CALL BUDGET (                                 &
                    UNPACK(ZCCS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:))&
-                   &*PRHODJ(:,:,:),14+(NSV_C2R2BEG-1),'SELF_BU_RSV') ! RCC
+                   &*PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_C2R2BEG+1,'SELF_BU_RSV') ! RCC
 !
 !*       4.2   Autoconversion of cloud droplets
 !              using a Berry-Reinhardt parameterization
@@ -1204,16 +1204,16 @@ IF( IMICRO >= 1 ) THEN
   ZW(:,:,:) = PRCS(:,:,:)
   IF (LBUDGET_RC) CALL BUDGET (                                            &
                UNPACK(ZRCS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:))       &
-                            *PRHODJ(:,:,:),7 ,'AUTO_BU_RRC')
+                            *PRHODJ(:,:,:), NBUDGET_RC,'AUTO_BU_RRC')
 
   ZW(:,:,:) = PRRS(:,:,:)
   IF (LBUDGET_RR) CALL BUDGET (                                            &
                UNPACK(ZRRS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:))       &
-                            *PRHODJ(:,:,:),8 ,'AUTO_BU_RRR')
+                            *PRHODJ(:,:,:), NBUDGET_RR,'AUTO_BU_RRR')
   ZW(:,:,:) = PCRS(:,:,:)
   IF (LBUDGET_SV) CALL BUDGET (                                       &
                UNPACK(ZCRS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:))  &
-               &*PRHODJ(:,:,:),15+(NSV_C2R2BEG-1),'AUTO_BU_RSV') ! RCR
+               &*PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_C2R2BEG+2,'AUTO_BU_RSV') ! RCR
 !
 !
 !*       4.3    Accretion sources
@@ -1263,15 +1263,15 @@ IF( IMICRO >= 1 ) THEN
   ZW(:,:,:) = PRCS(:,:,:)
   IF (LBUDGET_RC) CALL BUDGET (                                            &
                UNPACK(ZRCS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:))       &
-                              *PRHODJ(:,:,:),7 ,'ACCR_BU_RRC')
+                              *PRHODJ(:,:,:), NBUDGET_RC,'ACCR_BU_RRC')
   ZW(:,:,:) = PRRS(:,:,:)
   IF (LBUDGET_RR) CALL BUDGET (                                            &
                UNPACK(ZRRS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:))       &
-                              *PRHODJ(:,:,:),8 ,'ACCR_BU_RRR')
+                              *PRHODJ(:,:,:), NBUDGET_RR,'ACCR_BU_RRR')
   ZW(:,:,:) = PCCS(:,:,:)
   IF (LBUDGET_SV) CALL BUDGET (                                            &
                UNPACK(ZCCS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:))       &
-                  *PRHODJ(:,:,:),14+(NSV_C2R2BEG-1),'ACCR_BU_RSV') ! RCC
+                  *PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_C2R2BEG+1,'ACCR_BU_RSV') ! RCC
 
 !
 !*       4.4   Self collection - Coalescence/Break-up
@@ -1323,7 +1323,7 @@ IF( IMICRO >= 1 ) THEN
   PCRS(:,:,:) = UNPACK( ZCRS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
 !
   IF (LBUDGET_SV) CALL BUDGET(PCRS(:,:,:)*PRHODJ(:,:,:)&
-       &,15+(NSV_C2R2BEG-1),'SCBU_BU_RSV') ! RCR
+       &,NBUDGET_SV1-1+NSV_C2R2BEG+2,'SCBU_BU_RSV') ! RCR
 !
   DEALLOCATE(ZRCT)
   DEALLOCATE(ZRRT)
@@ -1354,20 +1354,20 @@ ELSE
 !
 !*       4.5    Budgets are forwarded
 !
-  IF (LBUDGET_SV) CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),14+(NSV_C2R2BEG-1),&
+  IF (LBUDGET_SV) CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_C2R2BEG+1,&
        &'SELF_BU_RSV') ! RCC
 !
-  IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7 ,'AUTO_BU_RRC')
-  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8 ,'AUTO_BU_RRR')
-  IF (LBUDGET_SV) CALL BUDGET (PCRS(:,:,:)*PRHODJ(:,:,:),15+(NSV_C2R2BEG-1),&
+  IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC,'AUTO_BU_RRC')
+  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR,'AUTO_BU_RRR')
+  IF (LBUDGET_SV) CALL BUDGET (PCRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_C2R2BEG+2,&
        &'AUTO_BU_RSV') ! RCR
 !
-  IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7 ,'ACCR_BU_RRC')
-  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8 ,'ACCR_BU_RRR')
-  IF (LBUDGET_SV) CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),14+(NSV_C2R2BEG-1),&
+  IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC,'ACCR_BU_RRC')
+  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR,'ACCR_BU_RRR')
+  IF (LBUDGET_SV) CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_C2R2BEG+1,&
        &'ACCR_BU_RSV') ! RCC
 !
-  IF (LBUDGET_SV) CALL BUDGET (PCRS(:,:,:)*PRHODJ(:,:,:),15+(NSV_C2R2BEG-1),&
+  IF (LBUDGET_SV) CALL BUDGET (PCRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_C2R2BEG+2,&
        &'SCBU_BU_RSV') ! RCR
 END IF
 !
@@ -1447,11 +1447,11 @@ IF( IMICRO >= 1 ) THEN
 !
 !*       4.1.2   budget storage
 !
-  IF (LBUDGET_SV) CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),14+(NSV_C2R2BEG-1),&
+  IF (LBUDGET_SV) CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_C2R2BEG+1,&
                                &'SELF_BU_RSV') ! RCC
-  IF (LBUDGET_RC) CALL BUDGET (PRCS*PRHODJ(:,:,:),7 ,'AUTO_BU_RRC')
-  IF (LBUDGET_SV) CALL BUDGET (PCRS*PRHODJ(:,:,:),15+(NSV_C2R2BEG-1),'AUTO_BU_RSV')
-  IF (LBUDGET_RR) CALL BUDGET (PRRS*PRHODJ(:,:,:),8 ,'AUTO_BU_RRR')
+  IF (LBUDGET_RC) CALL BUDGET (PRCS*PRHODJ(:,:,:), NBUDGET_RC,'AUTO_BU_RRC')
+  IF (LBUDGET_SV) CALL BUDGET (PCRS*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_C2R2BEG+2,'AUTO_BU_RSV')
+  IF (LBUDGET_RR) CALL BUDGET (PRRS*PRHODJ(:,:,:), NBUDGET_RR,'AUTO_BU_RRR')
 !
 !*       4.2.1    Accretion sources
 !
@@ -1487,24 +1487,24 @@ IF( IMICRO >= 1 ) THEN
 !
 !*       4.2.2   budget storage
 !
-  IF (LBUDGET_SV) CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),14+(NSV_C2R2BEG-1),&
+  IF (LBUDGET_SV) CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_C2R2BEG+1,&
                                &'ACCR_BU_RSV') ! RCC
-  IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7 ,'ACCR_BU_RRC')
-  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8 ,'ACCR_BU_RRR')
+  IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC,'ACCR_BU_RRC')
+  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR,'ACCR_BU_RRR')
 !
 ELSE
 !
 !*       4.3    Budgets are forwarded
 !
-  IF (LBUDGET_SV) CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),14+(NSV_C2R2BEG-1),&
+  IF (LBUDGET_SV) CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_C2R2BEG+1,&
                                &'SELF_BU_RSV') ! RCC
-  IF (LBUDGET_RC) CALL BUDGET (PRCS*PRHODJ(:,:,:),7 ,'AUTO_BU_RRC')
-  IF (LBUDGET_SV) CALL BUDGET (PCRS*PRHODJ(:,:,:),15+(NSV_C2R2BEG-1),'AUTO_BU_RSV')
-  IF (LBUDGET_RR) CALL BUDGET (PRRS*PRHODJ(:,:,:),8 ,'AUTO_BU_RRR')
-  IF (LBUDGET_SV) CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),14+(NSV_C2R2BEG-1),&
+  IF (LBUDGET_RC) CALL BUDGET (PRCS*PRHODJ(:,:,:), NBUDGET_RC,'AUTO_BU_RRC')
+  IF (LBUDGET_SV) CALL BUDGET (PCRS*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_C2R2BEG+2,'AUTO_BU_RSV')
+  IF (LBUDGET_RR) CALL BUDGET (PRRS*PRHODJ(:,:,:), NBUDGET_RR,'AUTO_BU_RRR')
+  IF (LBUDGET_SV) CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_C2R2BEG+1,&
                                &'ACCR_BU_RSV') ! RCC
-  IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7 ,'ACCR_BU_RRC')
-  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8 ,'ACCR_BU_RRR')
+  IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC,'ACCR_BU_RRC')
+  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR,'ACCR_BU_RRR')
 
 END IF
 !
@@ -1715,10 +1715,10 @@ ELSE ! KHKO
   END WHERE
 ENDIF
 !
-IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),6 ,'REVA_BU_RRV')
-IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8 ,'REVA_BU_RRR')
-IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4 ,'REVA_BU_RTH')
-IF (LBUDGET_SV) CALL BUDGET (PCRS(:,:,:)*PRHODJ(:,:,:),15+(NSV_C2R2BEG-1),'CEVA_BU_RSV')
+IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RV,'REVA_BU_RRV')
+IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR,'REVA_BU_RRR')
+IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH,'REVA_BU_RTH')
+IF (LBUDGET_SV) CALL BUDGET (PCRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_C2R2BEG+2,'CEVA_BU_RSV')
 !
   END SUBROUTINE C2R2_KHKO_EVAPORATION
 !
@@ -1929,12 +1929,12 @@ END DO
 !*       2.5     budget storage
 !
 IF (LBUDGET_RC.AND.OSEDC)                                              &
-               CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7 ,'SEDI_BU_RRC')
-IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8 ,'SEDI_BU_RRR')
+                CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC,'SEDI_BU_RRC')
+IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR,'SEDI_BU_RRR')
 IF (LBUDGET_SV) THEN
-  IF (OSEDC) CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),14+(NSV_C2R2BEG-1),&
+  IF (OSEDC) CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_C2R2BEG+1,&
                     &'SEDI_BU_RSV') ! RCC
-  CALL BUDGET (PCRS(:,:,:)*PRHODJ(:,:,:),15+(NSV_C2R2BEG-1),&
+  CALL BUDGET (PCRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_C2R2BEG+2,&
                     &'SEDI_BU_RSV') ! RCR
 END IF
 !
@@ -1955,9 +1955,9 @@ END IF
 !*       2.7     budget storage
 !
 IF ( LBUDGET_RC .AND. LDEPOC ) &
-   CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7 ,'DEPO_BU_RRC')
+   CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC,'DEPO_BU_RRC')
 IF ( LBUDGET_SV .AND. LDEPOC ) &
-   CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),14+(NSV_C2R2BEG-1),'DEPO_BU_RSV') 
+   CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_C2R2BEG+1,'DEPO_BU_RSV')
 !
   END SUBROUTINE C2R2_KHKO_SEDIMENTATION
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/rain_ice.f90 b/src/MNH/rain_ice.f90
index 23d5a06c5..a86f384b1 100644
--- a/src/MNH/rain_ice.f90
+++ b/src/MNH/rain_ice.f90
@@ -248,8 +248,10 @@ END MODULE MODI_RAIN_ICE
 !*       0.    DECLARATIONS
 !              ------------
 !
-use MODD_BUDGET,         only: LBU_ENABLE, LBUDGET_RC, LBUDGET_RG, LBUDGET_RH, LBUDGET_RI, &
-                               LBUDGET_RR, LBUDGET_RS, LBUDGET_RV, LBUDGET_TH
+use MODD_BUDGET,         only: LBU_ENABLE, LBUDGET_TH, LBUDGET_RV, LBUDGET_RC, LBUDGET_RR, &
+                               LBUDGET_RI, LBUDGET_RS, LBUDGET_RG, LBUDGET_RH, &
+                               NBUDGET_TH, NBUDGET_RV, NBUDGET_RC, NBUDGET_RR, &
+                               NBUDGET_RI, NBUDGET_RS, NBUDGET_RG, NBUDGET_RH
 use MODD_CONF,           only: LCHECK
 use MODD_CST,            only: XCI, XCL, XCPD, XCPV, XLSTT, XLVTT, XTT, &
                                XALPI, XBETAI, XGAMI, XMD, XMV, XTT
@@ -945,87 +947,87 @@ IF( IMICRO >= 0 ) THEN
 ! Reordered for compability with flexible structures like in AROME
 
  ! rain_ice_slow
- IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'HON_BU_RTH')
- IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7,'HON_BU_RRC')
- IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9,'HON_BU_RRI')
- IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'SFR_BU_RTH')
- IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8,'SFR_BU_RRR')
- IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),11,'SFR_BU_RRG')
- IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'DEPS_BU_RTH')
- IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),6,'DEPS_BU_RRV')
- IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),10,'DEPS_BU_RRS')
- IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9,'AGGS_BU_RRI')
- IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),10,'AGGS_BU_RRS')
- IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9,'AUTS_BU_RRI')
- IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),10,'AUTS_BU_RRS')
- IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'DEPG_BU_RTH')
- IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),6,'DEPG_BU_RRV')
- IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),11,'DEPG_BU_RRG')
+ IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'HON_BU_RTH')
+ IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RC,'HON_BU_RRC')
+ IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RI,'HON_BU_RRI')
+ IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'SFR_BU_RTH')
+ IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RR,'SFR_BU_RRR')
+ IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RG,'SFR_BU_RRG')
+ IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'DEPS_BU_RTH')
+ IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RV,'DEPS_BU_RRV')
+ IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RS,'DEPS_BU_RRS')
+ IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RI,'AGGS_BU_RRI')
+ IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RS,'AGGS_BU_RRS')
+ IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RI,'AUTS_BU_RRI')
+ IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RS,'AUTS_BU_RRS')
+ IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'DEPG_BU_RTH')
+ IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RV,'DEPG_BU_RRV')
+ IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RG,'DEPG_BU_RRG')
 
  IF (OWARM) THEN ! rain_ice_warm
-   IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7,'AUTO_BU_RRC')
-   IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8,'AUTO_BU_RRR')
-   IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7,'ACCR_BU_RRC')
-   IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8,'ACCR_BU_RRR')
-   IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'REVA_BU_RTH')
-   IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),6,'REVA_BU_RRV')
-   IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8,'REVA_BU_RRR')
+   IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RC,'AUTO_BU_RRC')
+   IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RR,'AUTO_BU_RRR')
+   IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RC,'ACCR_BU_RRC')
+   IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RR,'ACCR_BU_RRR')
+   IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'REVA_BU_RTH')
+   IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RV,'REVA_BU_RRV')
+   IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RR,'REVA_BU_RRR')
  ENDIF
 
  !rain_ice_fast_rs
- IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'RIM_BU_RTH')
- IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7,'RIM_BU_RRC')
- IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),10,'RIM_BU_RRS')
- IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),11,'RIM_BU_RRG')
- IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'ACC_BU_RTH')
- IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8,'ACC_BU_RRR')
- IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),10,'ACC_BU_RRS')
- IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),11,'ACC_BU_RRG')
- IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),10,'CMEL_BU_RRS')
- IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),11,'CMEL_BU_RRG')
+ IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'RIM_BU_RTH')
+ IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RC,'RIM_BU_RRC')
+ IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RS,'RIM_BU_RRS')
+ IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RG,'RIM_BU_RRG')
+ IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'ACC_BU_RTH')
+ IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RR,'ACC_BU_RRR')
+ IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RS,'ACC_BU_RRS')
+ IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RG,'ACC_BU_RRG')
+ IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RS,'CMEL_BU_RRS')
+ IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RG,'CMEL_BU_RRG')
 
  !rain_ice_fast_rg
- IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'CFRZ_BU_RTH')
- IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8,'CFRZ_BU_RRR')
- IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9,'CFRZ_BU_RRI')
- IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),11,'CFRZ_BU_RRG')
- IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'WETG_BU_RTH')
- IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7,'WETG_BU_RRC')
- IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8,'WETG_BU_RRR')
- IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9,'WETG_BU_RRI')
- IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),10,'WETG_BU_RRS')
- IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),11,'WETG_BU_RRG')
- IF (LBUDGET_RH) CALL BUDGET (PRHS(:,:,:)*PRHODJ(:,:,:),12,'WETG_BU_RRH')
- IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'DRYG_BU_RTH')
- IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7,'DRYG_BU_RRC')
- IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8,'DRYG_BU_RRR')
- IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9,'DRYG_BU_RRI')
- IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),10,'DRYG_BU_RRS')
- IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),11,'DRYG_BU_RRG')
- IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'GMLT_BU_RTH')
- IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8,'GMLT_BU_RRR')
- IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),11,'GMLT_BU_RRG')
+ IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'CFRZ_BU_RTH')
+ IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RR,'CFRZ_BU_RRR')
+ IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RI,'CFRZ_BU_RRI')
+ IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RG,'CFRZ_BU_RRG')
+ IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'WETG_BU_RTH')
+ IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RC,'WETG_BU_RRC')
+ IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RR,'WETG_BU_RRR')
+ IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RI,'WETG_BU_RRI')
+ IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RS,'WETG_BU_RRS')
+ IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RG,'WETG_BU_RRG')
+ IF (LBUDGET_RH) CALL BUDGET (PRHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RH,'WETG_BU_RRH')
+ IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'DRYG_BU_RTH')
+ IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RC,'DRYG_BU_RRC')
+ IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RR,'DRYG_BU_RRR')
+ IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RI,'DRYG_BU_RRI')
+ IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RS,'DRYG_BU_RRS')
+ IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RG,'DRYG_BU_RRG')
+ IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'GMLT_BU_RTH')
+ IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RR,'GMLT_BU_RRR')
+ IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RG,'GMLT_BU_RRG')
 
  IF(KRR==7) THEN ! rain_ice_fast_rh
-   IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'WETH_BU_RTH')
-   IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7,'WETH_BU_RRC')
-   IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8,'WETH_BU_RRR')
-   IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9,'WETH_BU_RRI')
-   IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),10,'WETH_BU_RRS')
-   IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),11,'WETH_BU_RRG')
-   IF (LBUDGET_RH) CALL BUDGET (PRHS(:,:,:)*PRHODJ(:,:,:),12,'WETH_BU_RRH')
-   IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'HMLT_BU_RTH')
-   IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8,'HMLT_BU_RRR')
-   IF (LBUDGET_RH) CALL BUDGET (PRHS(:,:,:)*PRHODJ(:,:,:),12,'HMLT_BU_RRH')
+   IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'WETH_BU_RTH')
+   IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RC,'WETH_BU_RRC')
+   IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RR,'WETH_BU_RRR')
+   IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RI,'WETH_BU_RRI')
+   IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RS,'WETH_BU_RRS')
+   IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RG,'WETH_BU_RRG')
+   IF (LBUDGET_RH) CALL BUDGET (PRHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RH,'WETH_BU_RRH')
+   IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'HMLT_BU_RTH')
+   IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RR,'HMLT_BU_RRR')
+   IF (LBUDGET_RH) CALL BUDGET (PRHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RH,'HMLT_BU_RRH')
  ENDIF
 
  !rain_ice_fast_ri
- IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'IMLT_BU_RTH')
- IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7,'IMLT_BU_RRC')
- IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9,'IMLT_BU_RRI')
- IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'BERFI_BU_RTH')
- IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7,'BERFI_BU_RRC')
- IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9,'BERFI_BU_RRI')
+ IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'IMLT_BU_RTH')
+ IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RC,'IMLT_BU_RRC')
+ IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RI,'IMLT_BU_RRI')
+ IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'BERFI_BU_RTH')
+ IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RC,'BERFI_BU_RRC')
+ IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RI,'BERFI_BU_RRI')
 !
 END IF
 !
diff --git a/src/MNH/rain_ice_elec.f90 b/src/MNH/rain_ice_elec.f90
index 37e0c3d04..645869054 100644
--- a/src/MNH/rain_ice_elec.f90
+++ b/src/MNH/rain_ice_elec.f90
@@ -1107,144 +1107,144 @@ ELSE
 ! Reordered for compability with flexible structures like in AROME
 
 ! rain_ice_slow
-  IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'HON_BU_RTH')
-  IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7,'HON_BU_RRC')
-  IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9,'HON_BU_RRI')
-  IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'SFR_BU_RTH')
-  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8,'SFR_BU_RRR')
-  IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),11,'SFR_BU_RRG')
-  IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'DEPS_BU_RTH')
-  IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),6,'DEPS_BU_RRV')
-  IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),10,'DEPS_BU_RRS')
-  IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9,'AGGS_BU_RRI')
-  IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),10,'AGGS_BU_RRS')
-  IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9,'AUTS_BU_RRI')
-  IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),10,'AUTS_BU_RRS')
-  IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'DEPG_BU_RTH')
-  IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),6,'DEPG_BU_RRV')
-  IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),11,'DEPG_BU_RRG')
+  IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'HON_BU_RTH')
+  IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RC,'HON_BU_RRC')
+  IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RI,'HON_BU_RRI')
+  IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'SFR_BU_RTH')
+  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RR,'SFR_BU_RRR')
+  IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RG,'SFR_BU_RRG')
+  IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'DEPS_BU_RTH')
+  IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RV,'DEPS_BU_RRV')
+  IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RS,'DEPS_BU_RRS')
+  IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RI,'AGGS_BU_RRI')
+  IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RS,'AGGS_BU_RRS')
+  IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RI,'AUTS_BU_RRI')
+  IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RS,'AUTS_BU_RRS')
+  IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'DEPG_BU_RTH')
+  IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RV,'DEPG_BU_RRV')
+  IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RG,'DEPG_BU_RRG')
 !
   IF (OWARM) THEN ! rain_ice_warm
-    IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7,'AUTO_BU_RRC')
-    IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8,'AUTO_BU_RRR')
-    IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7,'ACCR_BU_RRC')
-    IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8,'ACCR_BU_RRR')
-    IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'REVA_BU_RTH')
-    IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),6,'REVA_BU_RRV')
-    IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8,'REVA_BU_RRR')
+    IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RC,'AUTO_BU_RRC')
+    IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RR,'AUTO_BU_RRR')
+    IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RC,'ACCR_BU_RRC')
+    IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RR,'ACCR_BU_RRR')
+    IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'REVA_BU_RTH')
+    IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RV,'REVA_BU_RRV')
+    IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RR,'REVA_BU_RRR')
   ENDIF
 !
 ! rain_ice_fast_rs
-  IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'RIM_BU_RTH')
-  IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7,'RIM_BU_RRC')
-  IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),10,'RIM_BU_RRS')
-  IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),11,'RIM_BU_RRG')
-  IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'ACC_BU_RTH')
-  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8,'ACC_BU_RRR')
-  IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),10,'ACC_BU_RRS')
-  IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),11,'ACC_BU_RRG')
-  IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),10,'CMEL_BU_RRS')
-  IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),11,'CMEL_BU_RRG')
+  IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'RIM_BU_RTH')
+  IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RC,'RIM_BU_RRC')
+  IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RS,'RIM_BU_RRS')
+  IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RG,'RIM_BU_RRG')
+  IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'ACC_BU_RTH')
+  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RR,'ACC_BU_RRR')
+  IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RS,'ACC_BU_RRS')
+  IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RG,'ACC_BU_RRG')
+  IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RS,'CMEL_BU_RRS')
+  IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RG,'CMEL_BU_RRG')
 
 ! rain_ice_fast_rg
-  IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'CFRZ_BU_RTH')
-  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8,'CFRZ_BU_RRR')
-  IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9,'CFRZ_BU_RRI')
-  IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),11,'CFRZ_BU_RRG')
-  IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'WETG_BU_RTH')
-  IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7,'WETG_BU_RRC')
-  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8,'WETG_BU_RRR')
-  IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9,'WETG_BU_RRI')
-  IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),10,'WETG_BU_RRS')
-  IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),11,'WETG_BU_RRG')
-  IF (LBUDGET_RH) CALL BUDGET (PRHS(:,:,:)*PRHODJ(:,:,:),12,'WETG_BU_RRH')
-  IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'DRYG_BU_RTH')
-  IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7,'DRYG_BU_RRC')
-  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8,'DRYG_BU_RRR')
-  IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9,'DRYG_BU_RRI')
-  IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),10,'DRYG_BU_RRS')
-  IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),11,'DRYG_BU_RRG')
-  IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'GMLT_BU_RTH')
-  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8,'GMLT_BU_RRR')
-  IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),11,'GMLT_BU_RRG')
+  IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'CFRZ_BU_RTH')
+  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RR,'CFRZ_BU_RRR')
+  IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RI,'CFRZ_BU_RRI')
+  IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RG,'CFRZ_BU_RRG')
+  IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'WETG_BU_RTH')
+  IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RC,'WETG_BU_RRC')
+  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RR,'WETG_BU_RRR')
+  IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RI,'WETG_BU_RRI')
+  IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RS,'WETG_BU_RRS')
+  IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RG,'WETG_BU_RRG')
+  IF (LBUDGET_RH) CALL BUDGET (PRHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RH,'WETG_BU_RRH')
+  IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'DRYG_BU_RTH')
+  IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RC,'DRYG_BU_RRC')
+  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RR,'DRYG_BU_RRR')
+  IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RI,'DRYG_BU_RRI')
+  IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RS,'DRYG_BU_RRS')
+  IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RG,'DRYG_BU_RRG')
+  IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'GMLT_BU_RTH')
+  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RR,'GMLT_BU_RRR')
+  IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RG,'GMLT_BU_RRG')
 
   IF(KRR==7) THEN ! rain_ice_fast_rh
-    IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'WETH_BU_RTH')
-    IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7,'WETH_BU_RRC')
-    IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8,'WETH_BU_RRR')
-    IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9,'WETH_BU_RRI')
-    IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),10,'WETH_BU_RRS')
-    IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),11,'WETH_BU_RRG')
-    IF (LBUDGET_RH) CALL BUDGET (PRHS(:,:,:)*PRHODJ(:,:,:),12,'WETH_BU_RRH')
-    IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'HMLT_BU_RTH')
-    IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8,'HMLT_BU_RRR')
-    IF (LBUDGET_RH) CALL BUDGET (PRHS(:,:,:)*PRHODJ(:,:,:),12,'HMLT_BU_RRH')
+    IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'WETH_BU_RTH')
+    IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RC,'WETH_BU_RRC')
+    IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RR,'WETH_BU_RRR')
+    IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RI,'WETH_BU_RRI')
+    IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RS,'WETH_BU_RRS')
+    IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RG,'WETH_BU_RRG')
+    IF (LBUDGET_RH) CALL BUDGET (PRHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RH,'WETH_BU_RRH')
+    IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'HMLT_BU_RTH')
+    IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RR,'HMLT_BU_RRR')
+    IF (LBUDGET_RH) CALL BUDGET (PRHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RH,'HMLT_BU_RRH')
   ENDIF
 
 ! rain_ice_fast_ri
-  IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'IMLT_BU_RTH')
-  IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7,'IMLT_BU_RRC')
-  IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9,'IMLT_BU_RRI')
-  IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'BERFI_BU_RTH')
-  IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7,'BERFI_BU_RRC')
-  IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9,'BERFI_BU_RRI')
+  IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'IMLT_BU_RTH')
+  IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RC,'IMLT_BU_RRC')
+  IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RI,'IMLT_BU_RRI')
+  IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'BERFI_BU_RTH')
+  IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RC,'BERFI_BU_RRC')
+  IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RI,'BERFI_BU_RRI')
 !
   IF (LBUDGET_SV) THEN
 ! rain_ice_slow
-      CALL BUDGET (PQPIS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG,  'DEPS_BU_RSV')
-      CALL BUDGET (PQNIS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECEND,  'DEPS_BU_RSV')
-      CALL BUDGET (PQSS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+4,'DEPS_BU_RSV')
-      CALL BUDGET (PQIS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+3,'AGGS_BU_RSV')
-      CALL BUDGET (PQSS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+4,'AGGS_BU_RSV')
-      CALL BUDGET (PQIS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+3,'AUTS_BU_RSV')
-      CALL BUDGET (PQSS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+4,'AUTS_BU_RSV')
-      CALL BUDGET (PQPIS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG,  'DEPG_BU_RSV')
-      CALL BUDGET (PQNIS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECEND,  'DEPG_BU_RSV')
-      CALL BUDGET (PQGS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+5,'DEPG_BU_RSV')
+      CALL BUDGET (PQPIS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG,  'DEPS_BU_RSV')
+      CALL BUDGET (PQNIS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECEND,  'DEPS_BU_RSV')
+      CALL BUDGET (PQSS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+4,'DEPS_BU_RSV')
+      CALL BUDGET (PQIS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+3,'AGGS_BU_RSV')
+      CALL BUDGET (PQSS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+4,'AGGS_BU_RSV')
+      CALL BUDGET (PQIS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+3,'AUTS_BU_RSV')
+      CALL BUDGET (PQSS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+4,'AUTS_BU_RSV')
+      CALL BUDGET (PQPIS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG,  'DEPG_BU_RSV')
+      CALL BUDGET (PQNIS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECEND,  'DEPG_BU_RSV')
+      CALL BUDGET (PQGS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+5,'DEPG_BU_RSV')
 !
 ! rain_ice_warm
       IF (OWARM) THEN 
-        CALL BUDGET (PQCS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+1,'AUTO_BU_RSV')
-        CALL BUDGET (PQRS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+2,'AUTO_BU_RSV')
-        CALL BUDGET (PQCS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+1,'ACCR_BU_RSV')
-        CALL BUDGET (PQRS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+2,'ACCR_BU_RSV')
-        CALL BUDGET (PQPIS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG,  'REVA_BU_RSV')
-        CALL BUDGET (PQNIS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECEND,  'REVA_BU_RSV')
-        CALL BUDGET (PQRS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+2,'REVA_BU_RSV')
+        CALL BUDGET (PQCS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+1,'AUTO_BU_RSV')
+        CALL BUDGET (PQRS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+2,'AUTO_BU_RSV')
+        CALL BUDGET (PQCS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+1,'ACCR_BU_RSV')
+        CALL BUDGET (PQRS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+2,'ACCR_BU_RSV')
+        CALL BUDGET (PQPIS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG,  'REVA_BU_RSV')
+        CALL BUDGET (PQNIS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECEND,  'REVA_BU_RSV')
+        CALL BUDGET (PQRS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+2,'REVA_BU_RSV')
       END IF
 !
 ! rain_ice_fast_rs
-      CALL BUDGET (PQCS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+1,'RIM_BU_RSV')
-      CALL BUDGET (PQSS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+4,'RIM_BU_RSV')
-      CALL BUDGET (PQGS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECEND,  'RIM_BU_RSV')
-      CALL BUDGET (PQRS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+2,'ACC_BU_RSV')
-      CALL BUDGET (PQSS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+4,'ACC_BU_RSV')
-      CALL BUDGET (PQGS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECEND,  'ACC_BU_RSV')
-      CALL BUDGET (PQSS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+4,'CMEL_BU_RSV')
-      CALL BUDGET (PQGS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECEND,  'CMEL_BU_RSV')
+      CALL BUDGET (PQCS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+1,'RIM_BU_RSV')
+      CALL BUDGET (PQSS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+4,'RIM_BU_RSV')
+      CALL BUDGET (PQGS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECEND,  'RIM_BU_RSV')
+      CALL BUDGET (PQRS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+2,'ACC_BU_RSV')
+      CALL BUDGET (PQSS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+4,'ACC_BU_RSV')
+      CALL BUDGET (PQGS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECEND,  'ACC_BU_RSV')
+      CALL BUDGET (PQSS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+4,'CMEL_BU_RSV')
+      CALL BUDGET (PQGS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECEND,  'CMEL_BU_RSV')
 !
 ! rain_ice_fast_rg
-      CALL BUDGET (PQRS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+2,'CFRZ_BU_RSV')
-      CALL BUDGET (PQIS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+3,'CFRZ_BU_RSV')
-      CALL BUDGET (PQGS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECEND,  'CFRZ_BU_RSV')
-      CALL BUDGET (PQCS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+1,'WETG_BU_RSV')
-      CALL BUDGET (PQRS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+2,'WETG_BU_RSV')
-      CALL BUDGET (PQIS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+3,'WETG_BU_RSV')
-      CALL BUDGET (PQSS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+4,'WETG_BU_RSV')
-      CALL BUDGET (PQGS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECEND,  'WETG_BU_RSV')
-      CALL BUDGET (PQCS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+1,'DRYG_BU_RSV')
-      CALL BUDGET (PQRS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+2,'DRYG_BU_RSV')
-      CALL BUDGET (PQIS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+3,'DRYG_BU_RSV')
-      CALL BUDGET (PQSS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+4,'DRYG_BU_RSV')
-      CALL BUDGET (PQGS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECEND,  'DRYG_BU_RSV')
-      CALL BUDGET (PQRS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+2,'GMLT_BU_RSV')
-      CALL BUDGET (PQGS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECEND,  'GMLT_BU_RSV')
+      CALL BUDGET (PQRS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+2,'CFRZ_BU_RSV')
+      CALL BUDGET (PQIS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+3,'CFRZ_BU_RSV')
+      CALL BUDGET (PQGS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECEND,  'CFRZ_BU_RSV')
+      CALL BUDGET (PQCS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+1,'WETG_BU_RSV')
+      CALL BUDGET (PQRS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+2,'WETG_BU_RSV')
+      CALL BUDGET (PQIS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+3,'WETG_BU_RSV')
+      CALL BUDGET (PQSS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+4,'WETG_BU_RSV')
+      CALL BUDGET (PQGS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECEND,  'WETG_BU_RSV')
+      CALL BUDGET (PQCS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+1,'DRYG_BU_RSV')
+      CALL BUDGET (PQRS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+2,'DRYG_BU_RSV')
+      CALL BUDGET (PQIS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+3,'DRYG_BU_RSV')
+      CALL BUDGET (PQSS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+4,'DRYG_BU_RSV')
+      CALL BUDGET (PQGS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECEND,  'DRYG_BU_RSV')
+      CALL BUDGET (PQRS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+2,'GMLT_BU_RSV')
+      CALL BUDGET (PQGS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECEND,  'GMLT_BU_RSV')
 !
 ! rain_ice_fast_ri
-      CALL BUDGET (PQCS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+1,'IMLT_BU_RSV')
-      CALL BUDGET (PQIS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+3,'IMLT_BU_RSV')
-      CALL BUDGET (PQCS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+1,'BERFI_BU_RSV')
-      CALL BUDGET (PQIS(:,:,:) * PRHODJ(:,:,:),12+NSV_ELECBEG+3,'BERFI_BU_RSV')
+      CALL BUDGET (PQCS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+1,'IMLT_BU_RSV')
+      CALL BUDGET (PQIS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+3,'IMLT_BU_RSV')
+      CALL BUDGET (PQCS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+1,'BERFI_BU_RSV')
+      CALL BUDGET (PQIS(:,:,:) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+3,'BERFI_BU_RSV')
 !
   END IF
 END IF
@@ -1974,20 +1974,20 @@ REAL :: ZVR, ZVI, ZVS, ZVG, ZETA0, ZK, ZRE0
 !*       2.3     budget storage
 !
   IF (LBUDGET_RC .AND. OSEDIC) &
-                  CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7 ,'SEDI_BU_RRC')
-  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8 ,'SEDI_BU_RRR')
-  IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9 ,'SEDI_BU_RRI')
-  IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),10,'SEDI_BU_RRS')
-  IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),11,'SEDI_BU_RRG')
+                  CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC,'SEDI_BU_RRC')
+  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR,'SEDI_BU_RRR')
+  IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RI,'SEDI_BU_RRI')
+  IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RS,'SEDI_BU_RRS')
+  IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RG,'SEDI_BU_RRG')
   IF ( KRR == 7 .AND. LBUDGET_RH) &
-                  CALL BUDGET (PRHS(:,:,:)*PRHODJ(:,:,:),12,'SEDI_BU_RRH')
+                  CALL BUDGET (PRHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RH,'SEDI_BU_RRH')
 !
   IF (LBUDGET_SV) THEN
-    CALL BUDGET (PQCS(:,:,:)*PRHODJ(:,:,:),12+NSV_ELECBEG+1,'SEDI_BU_RSV')
-    CALL BUDGET (PQRS(:,:,:)*PRHODJ(:,:,:),12+NSV_ELECBEG+2,'SEDI_BU_RSV')
-    CALL BUDGET (PQIS(:,:,:)*PRHODJ(:,:,:),12+NSV_ELECBEG+3,'SEDI_BU_RSV')
-    CALL BUDGET (PQSS(:,:,:)*PRHODJ(:,:,:),12+NSV_ELECBEG+4,'SEDI_BU_RSV')
-    CALL BUDGET (PQGS(:,:,:)*PRHODJ(:,:,:),12+NSV_ELECBEG+5,'SEDI_BU_RSV')
+    CALL BUDGET (PQCS(:,:,:)*PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+1,'SEDI_BU_RSV')
+    CALL BUDGET (PQRS(:,:,:)*PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+2,'SEDI_BU_RSV')
+    CALL BUDGET (PQIS(:,:,:)*PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+3,'SEDI_BU_RSV')
+    CALL BUDGET (PQSS(:,:,:)*PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+4,'SEDI_BU_RSV')
+    CALL BUDGET (PQGS(:,:,:)*PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_ELECBEG+5,'SEDI_BU_RSV')
   END IF
 !
   END SUBROUTINE RAIN_ICE_ELEC_SEDIMENTATION_SPLIT
@@ -2369,13 +2369,13 @@ REAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3)) :: ZCONC3D !
 !*       2.3     budget storage
 !
   IF (LBUDGET_RC .AND. OSEDIC) &
-                  CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7 ,'SEDI_BU_RRC')
-  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8 ,'SEDI_BU_RRR')
-  IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9 ,'SEDI_BU_RRI')
-  IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),10,'SEDI_BU_RRS')
-  IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),11,'SEDI_BU_RRG')
+                  CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC,'SEDI_BU_RRC')
+  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR,'SEDI_BU_RRR')
+  IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RI,'SEDI_BU_RRI')
+  IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RS,'SEDI_BU_RRS')
+  IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RG,'SEDI_BU_RRG')
   IF (KRR == 7 .AND. LBUDGET_RH) &     
-                  CALL BUDGET (PRHS(:,:,:)*PRHODJ(:,:,:),12,'SEDI_BU_RRH')
+                  CALL BUDGET (PRHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RH,'SEDI_BU_RRH')
 
 !
   END SUBROUTINE RAIN_ICE_SEDIMENTATION_STAT
@@ -2485,9 +2485,9 @@ END IF
 !
 !*       3.1.3   budget storage
 !
-IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'HENU_BU_RTH')
-IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),6,'HENU_BU_RRV')
-IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9,'HENU_BU_RRI')
+IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'HENU_BU_RTH')
+IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RV,'HENU_BU_RRV')
+IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RI,'HENU_BU_RRI')
 !
   END SUBROUTINE RAIN_ICE_ELEC_NUCLEATION
 !
@@ -2532,19 +2532,19 @@ IMPLICIT NONE
 !
   IF (LBUDGET_TH) CALL BUDGET (                                                &
                  UNPACK(ZTHS(:),MASK=GMICRO(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),  &
-                                                              4,'HON_BU_RTH')
+                                                        NBUDGET_TH,'HON_BU_RTH')
   IF (LBUDGET_RC) CALL BUDGET (                                                &
                      UNPACK(ZRCS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),   &
-                                                              7,'HON_BU_RRC')
+                                                        NBUDGET_RC,'HON_BU_RRC')
   IF (LBUDGET_RI) CALL BUDGET (                                                &
                      UNPACK(ZRIS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),   &
-                                                              9,'HON_BU_RRI')
+                                                        NBUDGET_RI,'HON_BU_RRI')
 !
   IF (LBUDGET_SV) THEN
     CALL BUDGET (UNPACK(ZQCS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0),&
-                                              12+NSV_ELECBEG+1,'HON_BU_RSV')
+                                              NBUDGET_SV1-1+NSV_ELECBEG+1,'HON_BU_RSV')
     CALL BUDGET (UNPACK(ZQIS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                              12+NSV_ELECBEG+3,'HON_BU_RSV')
+                                              NBUDGET_SV1-1+NSV_ELECBEG+3,'HON_BU_RSV')
   END IF
 !
 !*       3.5.2   compute the spontaneous freezing source: RRHONG & QRHONG
@@ -2568,19 +2568,19 @@ IMPLICIT NONE
 !
   IF (LBUDGET_TH) CALL BUDGET (                                                &
                  UNPACK(ZTHS(:),MASK=GMICRO(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),  &
-                                                              4,'SFR_BU_RTH')
+                                                        NBUDGET_TH,'SFR_BU_RTH')
   IF (LBUDGET_RR) CALL BUDGET (                                                &
                      UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),   &
-                                                              8,'SFR_BU_RRR')
+                                                        NBUDGET_RR,'SFR_BU_RRR')
   IF (LBUDGET_RG) CALL BUDGET (                                                &
                      UNPACK(ZRGS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),   &
-                                                             11,'SFR_BU_RRG')
+                                                        NBUDGET_RG,'SFR_BU_RRG')
 !
   IF (LBUDGET_SV) THEN
     CALL BUDGET (UNPACK(ZQRS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0),&
-                                              12+NSV_ELECBEG+2,'HON_BU_RSV')
+                                              NBUDGET_SV1-1+NSV_ELECBEG+2,'HON_BU_RSV')
     CALL BUDGET (UNPACK(ZQGS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                              12+NSV_ELECEND,  'HON_BU_RSV')
+                                              NBUDGET_SV1-1+NSV_ELECEND,  'HON_BU_RSV')
   END IF
 
 !
@@ -2623,21 +2623,21 @@ IMPLICIT NONE
 !
   IF (LBUDGET_TH) CALL BUDGET (                                                &
                  UNPACK(ZTHS(:),MASK=GMICRO(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),  &
-                                                              4,'DEPS_BU_RTH')
+                                                      NBUDGET_TH,'DEPS_BU_RTH')
   IF (LBUDGET_RV) CALL BUDGET (                                                &
                  UNPACK(ZRVS(:),MASK=GMICRO(:,:,:),FIELD=PRVS)*PRHODJ(:,:,:),  &
-                                                              6,'DEPS_BU_RRV')
+                                                      NBUDGET_RV,'DEPS_BU_RRV')
   IF (LBUDGET_RS) CALL BUDGET (                                                &
                      UNPACK(ZRSS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),   &
-                                                             10,'DEPS_BU_RRS')
+                                                      NBUDGET_RS,'DEPS_BU_RRS')
 !
   IF (LBUDGET_SV) THEN
     CALL BUDGET (UNPACK(ZQPIS(:), MASK=GMICRO(:,:,:), FIELD=PQPIS)          &
-                        *PRHODJ(:,:,:), 12+NSV_ELECBEG ,'DEPS_BU_RSV')
+                        *PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_ELECBEG ,'DEPS_BU_RSV')
     CALL BUDGET (UNPACK(ZQNIS(:), MASK=GMICRO(:,:,:), FIELD=PQNIS)          &
-                        *PRHODJ(:,:,:), 12+NSV_ELECEND ,'DEPS_BU_RSV')
+                        *PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_ELECEND ,'DEPS_BU_RSV')
     CALL BUDGET (UNPACK(ZQSS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                              12+NSV_ELECBEG+4,'DEPS_BU_RSV')
+                                              NBUDGET_SV1-1+NSV_ELECBEG+4,'DEPS_BU_RSV')
   END IF
 !
 !*       3.5.3.4  compute the aggregation on r_s: RIAGGS & QIAGGS
@@ -2669,16 +2669,16 @@ IMPLICIT NONE
 !
   IF (LBUDGET_RI) CALL BUDGET (                                                &
                      UNPACK(ZRIS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),   &
-                                                              9,'AGGS_BU_RRI')
+                                                        NBUDGET_RI,'AGGS_BU_RRI')
   IF (LBUDGET_RS) CALL BUDGET (                                                &
                      UNPACK(ZRSS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),   &
-                                                             10,'AGGS_BU_RRS')
+                                                        NBUDGET_RS,'AGGS_BU_RRS')
 !
   IF (LBUDGET_SV) THEN
     CALL BUDGET (UNPACK(ZQIS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                          12+NSV_ELECBEG+3,'AGGS_BU_RSV')
+                                          NBUDGET_SV1-1+NSV_ELECBEG+3,'AGGS_BU_RSV')
     CALL BUDGET (UNPACK(ZQSS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                          12+NSV_ELECBEG+4,'AGGS_BU_RSV')
+                                          NBUDGET_SV1-1+NSV_ELECBEG+4,'AGGS_BU_RSV')
   END IF
 !
   CALL ELEC_IAGGS_B()                                   ! QIAGGS_boun
@@ -2689,9 +2689,9 @@ IMPLICIT NONE
 !
   IF (LBUDGET_SV) THEN
     CALL BUDGET (UNPACK(ZQIS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                          12+NSV_ELECBEG+3,'NIIS_BU_RSV')
+                                          NBUDGET_SV1-1+NSV_ELECBEG+3,'NIIS_BU_RSV')
     CALL BUDGET (UNPACK(ZQSS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                          12+NSV_ELECBEG+4,'NIIS_BU_RSV')
+                                          NBUDGET_SV1-1+NSV_ELECBEG+4,'NIIS_BU_RSV')
   END IF
 !
 !*       3.5.3.5  compute the autoconversion of r_i for r_s production: 
@@ -2719,16 +2719,16 @@ IMPLICIT NONE
   DEALLOCATE(ZCRIAUTI)
   IF (LBUDGET_RI) CALL BUDGET (                                                &
                      UNPACK(ZRIS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),   &
-                                                              9,'AUTS_BU_RRI')
+                                                      NBUDGET_RI,'AUTS_BU_RRI')
   IF (LBUDGET_RS) CALL BUDGET (                                                &
                      UNPACK(ZRSS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),   &
-                                                             10,'AUTS_BU_RRS')
+                                                      NBUDGET_RS,'AUTS_BU_RRS')
 !
   IF (LBU_RSV) THEN
     CALL BUDGET (UNPACK(ZQIS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                         12+NSV_ELECBEG+3,'AUTS_BU_RSV')
+                                         NBUDGET_SV1-1+NSV_ELECBEG+3,'AUTS_BU_RSV')
     CALL BUDGET (UNPACK(ZQSS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                         12+NSV_ELECBEG+4,'AUTS_BU_RSV')
+                                         NBUDGET_SV1-1+NSV_ELECBEG+4,'AUTS_BU_RSV')
   END IF
 !
 !*       3.5.3.6  compute the deposition on r_g: RVDEPG & QVDEPG
@@ -2757,21 +2757,21 @@ IMPLICIT NONE
 !
   IF (LBUDGET_TH) CALL BUDGET (                                                &
                  UNPACK(ZTHS(:),MASK=GMICRO(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),  &
-                                                              4,'DEPG_BU_RTH')
+                                                      NBUDGET_TH,'DEPG_BU_RTH')
   IF (LBUDGET_RV) CALL BUDGET (                                                &
                  UNPACK(ZRVS(:),MASK=GMICRO(:,:,:),FIELD=PRVS)*PRHODJ(:,:,:),  &
-                                                              6,'DEPG_BU_RRV')
+                                                      NBUDGET_RV,'DEPG_BU_RRV')
   IF (LBUDGET_RG) CALL BUDGET (                                                &
                      UNPACK(ZRGS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),   &
-                                                             11,'DEPG_BU_RRG')
+                                                      NBUDGET_RG,'DEPG_BU_RRG')
 !
   IF (LBU_RSV) THEN
     CALL BUDGET (UNPACK(ZQPIS(:), MASK=GMICRO(:,:,:), FIELD=PQPIS)          &
-                        *PRHODJ(:,:,:), 12+NSV_ELECBEG ,'DEPG_BU_RSV')
+                        *PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_ELECBEG ,'DEPG_BU_RSV')
     CALL BUDGET (UNPACK(ZQNIS(:), MASK=GMICRO(:,:,:), FIELD=PQNIS)          &
-                        *PRHODJ(:,:,:), 12+NSV_ELECEND ,'DEPG_BU_RSV')
+                        *PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_ELECEND ,'DEPG_BU_RSV')
     CALL BUDGET (UNPACK(ZQGS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                                 12+NSV_ELECEND,'DEPG_BU_RSV')
+                                                 NBUDGET_SV1-1+NSV_ELECEND,'DEPG_BU_RSV')
   END IF
 !
   END SUBROUTINE RAIN_ICE_ELEC_SLOW
@@ -2840,16 +2840,16 @@ REAL :: ZCRIAUTC             ! Critical cloud mixing ratio
 !
       IF (LBUDGET_RC) CALL BUDGET (                                            &
                        UNPACK(ZRCS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0), &
-                                                                7,'AUTO_BU_RRC')
+                                                      NBUDGET_RC,'AUTO_BU_RRC')
       IF (LBUDGET_RR) CALL BUDGET (                                            &
                        UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0), &
-                                                                8,'AUTO_BU_RRR')
+                                                      NBUDGET_RR,'AUTO_BU_RRR')
 !
       IF (LBUDGET_SV) THEN
         CALL BUDGET (UNPACK(ZQCS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                              12+NSV_ELECBEG+1,'AUTO_BU_RSV')
+                                              NBUDGET_SV1-1+NSV_ELECBEG+1,'AUTO_BU_RSV')
         CALL BUDGET (UNPACK(ZQRS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                              12+NSV_ELECBEG+2,'AUTO_BU_RSV')
+                                              NBUDGET_SV1-1+NSV_ELECBEG+2,'AUTO_BU_RSV')
       END IF
 !
 !
@@ -2874,16 +2874,16 @@ REAL :: ZCRIAUTC             ! Critical cloud mixing ratio
 !
     IF (LBUDGET_RC) CALL BUDGET (                                            &
                      UNPACK(ZRCS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0), &
-                                                              7,'ACCR_BU_RRC')
+                                                    NBUDGET_RC,'ACCR_BU_RRC')
     IF (LBUDGET_RR) CALL BUDGET (                                            &
                      UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0), &
-                                                              8,'ACCR_BU_RRR')
+                                                    NBUDGET_RR,'ACCR_BU_RRR')
 !
     IF (LBU_RSV) THEN
       CALL BUDGET (UNPACK(ZQCS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                            12+NSV_ELECBEG+1,'ACCR_BU_RSV')
+                                            NBUDGET_SV1-1+NSV_ELECBEG+1,'ACCR_BU_RSV')
       CALL BUDGET (UNPACK(ZQRS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                            12+NSV_ELECBEG+2,'ACCR_BU_RSV')
+                                            NBUDGET_SV1-1+NSV_ELECBEG+2,'ACCR_BU_RSV')
     END IF
 !
 !
@@ -2916,23 +2916,23 @@ REAL :: ZCRIAUTC             ! Critical cloud mixing ratio
 !
     IF (LBUDGET_TH) CALL BUDGET (                                              &
                  UNPACK(ZTHS(:),MASK=GMICRO(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),  &
-                                                              4,'REVA_BU_RTH')
+                                                      NBUDGET_TH,'REVA_BU_RTH')
     IF (LBUDGET_RV) CALL BUDGET (                                              &
                  UNPACK(ZRVS(:),MASK=GMICRO(:,:,:),FIELD=PRVS)*PRHODJ(:,:,:),  &
-                                                              6,'REVA_BU_RRV')
+                                                      NBUDGET_RV,'REVA_BU_RRV')
     IF (LBUDGET_RR) CALL BUDGET (                                              &
                      UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),   &
-                                                              8,'REVA_BU_RRR')
+                                                      NBUDGET_RR,'REVA_BU_RRR')
     ZW(:,:,:)=PEVAP3D(:,:,:)
     PEVAP3D(:,:,:)=UNPACK(ZZW(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:))
 !
     IF (LBUDGET_SV) THEN
       CALL BUDGET (UNPACK(ZQPIS(:), MASK=GMICRO(:,:,:), FIELD=PQPIS)          &
-                          *PRHODJ(:,:,:), 12+NSV_ELECBEG ,'REVA_BU_RSV')
+                          *PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_ELECBEG ,'REVA_BU_RSV')
       CALL BUDGET (UNPACK(ZQNIS(:), MASK=GMICRO(:,:,:), FIELD=PQNIS)          &
-                          *PRHODJ(:,:,:), 12+NSV_ELECEND ,'REVA_BU_RSV')
+                          *PRHODJ(:,:,:), NBUDGET_SV1-1+NSV_ELECEND ,'REVA_BU_RSV')
       CALL BUDGET (UNPACK(ZQRS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                          12+NSV_ELECBEG+2,'REVA_BU_RSV')
+                                          NBUDGET_SV1-1+NSV_ELECBEG+2,'REVA_BU_RSV')
     END IF
 !
   END SUBROUTINE RAIN_ICE_ELEC_WARM
@@ -3069,25 +3069,25 @@ IMPLICIT NONE
 !
   IF (LBUDGET_TH) CALL BUDGET (                                               &
                UNPACK(ZTHS(:),MASK=GMICRO(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),   &
-                                                             4,'RIM_BU_RTH')
+                                                      NBUDGET_TH,'RIM_BU_RTH')
   IF (LBUDGET_RC) CALL BUDGET (                                               &
                    UNPACK(ZRCS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),    &
-                                                             7,'RIM_BU_RRC')
+                                                      NBUDGET_RC,'RIM_BU_RRC')
   IF (LBUDGET_RS) CALL BUDGET (                                               &
                    UNPACK(ZRSS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),    &
-                                                            10,'RIM_BU_RRS')
+                                                      NBUDGET_RS,'RIM_BU_RRS')
   IF (LBUDGET_RG) CALL BUDGET (                                               &
                    UNPACK(ZRGS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),    &
-                                                            11,'RIM_BU_RRG')
+                                                      NBUDGET_RG,'RIM_BU_RRG')
 !
 !
   IF (LBUDGET_SV) THEN
     CALL BUDGET (UNPACK(ZQCS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                           12+NSV_ELECBEG+1,'RIM_BU_RSV')
+                                           NBUDGET_SV1-1+NSV_ELECBEG+1,'RIM_BU_RSV')
     CALL BUDGET (UNPACK(ZQSS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                           12+NSV_ELECBEG+4,'RIM_BU_RSV')
+                                           NBUDGET_SV1-1+NSV_ELECBEG+4,'RIM_BU_RSV')
     CALL BUDGET (UNPACK(ZQGS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                             12+NSV_ELECEND,'RIM_BU_RSV')
+                                             NBUDGET_SV1-1+NSV_ELECEND,'RIM_BU_RSV')
   END IF
 !
   DEALLOCATE(GRIM)
@@ -3247,24 +3247,24 @@ IMPLICIT NONE
   DEALLOCATE(GACC)
   IF (LBUDGET_TH) CALL BUDGET (                                               &
                UNPACK(ZTHS(:),MASK=GMICRO(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),   &
-                                                             4,'ACC_BU_RTH')
+                                                      NBUDGET_TH,'ACC_BU_RTH')
   IF (LBUDGET_RR) CALL BUDGET (                                               &
                    UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),    &
-                                                             8,'ACC_BU_RRR')
+                                                      NBUDGET_RR,'ACC_BU_RRR')
   IF (LBUDGET_RS) CALL BUDGET (                                               &
                    UNPACK(ZRSS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),    &
-                                                            10,'ACC_BU_RRS')
+                                                      NBUDGET_RS,'ACC_BU_RRS')
   IF (LBUDGET_RG) CALL BUDGET (                                               &
                    UNPACK(ZRGS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),    &
-                                                            11,'ACC_BU_RRG')
+                                                      NBUDGET_RG,'ACC_BU_RRG')
 !
   IF (LBUDGET_SV) THEN
     CALL BUDGET (UNPACK(ZQRS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                            12+NSV_ELECBEG+2,'ACC_BU_RSV')
+                                            NBUDGET_SV1-1+NSV_ELECBEG+2,'ACC_BU_RSV')
     CALL BUDGET (UNPACK(ZQSS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                            12+NSV_ELECBEG+4,'ACC_BU_RSV')
+                                            NBUDGET_SV1-1+NSV_ELECBEG+4,'ACC_BU_RSV')
     CALL BUDGET (UNPACK(ZQGS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                              12+NSV_ELECEND,'ACC_BU_RSV')
+                                              NBUDGET_SV1-1+NSV_ELECEND,'ACC_BU_RSV')
   END IF
 !
 !*       5.3    Conversion-Melting of the aggregates: RSMLT & QSMLT
@@ -3303,16 +3303,16 @@ IMPLICIT NONE
 !
   IF (LBUDGET_RS) CALL BUDGET (                                                &
                      UNPACK(ZRSS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),   &
-                                                             10,'CMEL_BU_RRS')
+                                                      NBUDGET_RS,'CMEL_BU_RRS')
   IF (LBUDGET_RG) CALL BUDGET (                                                &
                      UNPACK(ZRGS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),   &
-                                                             11,'CMEL_BU_RRG')
+                                                      NBUDGET_RG,'CMEL_BU_RRG')
 !
   IF (LBUDGET_SV) THEN
     CALL BUDGET (UNPACK(ZQSS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                          12+NSV_ELECBEG+4,'CMEL_BU_RSV')
+                                          NBUDGET_SV1-1+NSV_ELECBEG+4,'CMEL_BU_RSV')
     CALL BUDGET (UNPACK(ZQGS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                            12+NSV_ELECEND,'CMEL_BU_RSV')
+                                            NBUDGET_SV1-1+NSV_ELECEND,'CMEL_BU_RSV')
   END IF
 !
   END SUBROUTINE RAIN_ICE_ELEC_FAST_RS
@@ -3368,24 +3368,24 @@ IMPLICIT NONE
 !
   IF (LBUDGET_TH) CALL BUDGET (                                                &
                  UNPACK(ZTHS(:),MASK=GMICRO(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),  &
-                                                              4,'CFRZ_BU_RTH')
+                                                      NBUDGET_TH,'CFRZ_BU_RTH')
   IF (LBUDGET_RR) CALL BUDGET (                                                &
                      UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),   &
-                                                              8,'CFRZ_BU_RRR')
+                                                      NBUDGET_RR,'CFRZ_BU_RRR')
   IF (LBUDGET_RI) CALL BUDGET (                                                &
                      UNPACK(ZRIS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),   &
-                                                              9,'CFRZ_BU_RRI')
+                                                      NBUDGET_RI,'CFRZ_BU_RRI')
   IF (LBUDGET_RG) CALL BUDGET (                                                &
                      UNPACK(ZRGS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),   &
-                                                             11,'CFRZ_BU_RRG')
+                                                      NBUDGET_RG,'CFRZ_BU_RRG')
 !
   IF (LBU_RSV) THEN
     CALL BUDGET (UNPACK(ZQRS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                          12+NSV_ELECBEG+2,'CFRZ_BU_RSV')
+                                          NBUDGET_SV1-1+NSV_ELECBEG+2,'CFRZ_BU_RSV')
     CALL BUDGET (UNPACK(ZQIS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                          12+NSV_ELECBEG+3,'CFRZ_BU_RSV')
+                                          NBUDGET_SV1-1+NSV_ELECBEG+3,'CFRZ_BU_RSV')
     CALL BUDGET (UNPACK(ZQGS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                            12+NSV_ELECEND,'CFRZ_BU_RSV')
+                                            NBUDGET_SV1-1+NSV_ELECEND,'CFRZ_BU_RSV')
   END IF
 !
 !
@@ -3751,39 +3751,39 @@ IMPLICIT NONE
 !
   IF (LBUDGET_TH) CALL BUDGET (                                                &
                  UNPACK(ZTHS(:),MASK=GMICRO(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),  &
-                                                              4,'WETG_BU_RTH')
+                                                      NBUDGET_TH,'WETG_BU_RTH')
   IF (LBUDGET_RC) CALL BUDGET (                                                &
                      UNPACK(ZRCS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),   &
-                                                              7,'WETG_BU_RRC')
+                                                      NBUDGET_RC,'WETG_BU_RRC')
   IF (LBUDGET_RR) CALL BUDGET (                                                &
                      UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),   &
-                                                              8,'WETG_BU_RRR')
+                                                      NBUDGET_RR,'WETG_BU_RRR')
   IF (LBUDGET_RI) CALL BUDGET (                                                &
                      UNPACK(ZRIS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),   &
-                                                              9,'WETG_BU_RRI')
+                                                      NBUDGET_RI,'WETG_BU_RRI')
   IF (LBUDGET_RS) CALL BUDGET (                                                &
                      UNPACK(ZRSS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),   &
-                                                             10,'WETG_BU_RRS')
+                                                      NBUDGET_RS,'WETG_BU_RRS')
   IF (LBUDGET_RG) CALL BUDGET (                                                &
                      UNPACK(ZRGS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),   &
-                                                             11,'WETG_BU_RRG')
+                                                      NBUDGET_RG,'WETG_BU_RRG')
   IF ( KRR == 7 ) THEN
     IF (LBUDGET_RH) CALL BUDGET (                                              &
                      UNPACK(ZRHS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),   &
-                                                             12,'WETG_BU_RRH')
+                                                      NBUDGET_RH,'WETG_BU_RRH')
   END IF
 !
   IF (LBU_RSV) THEN
     CALL BUDGET (UNPACK(ZQCS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                          12+NSV_ELECBEG+1,'WETG_BU_RSV')
+                                          NBUDGET_SV1-1+NSV_ELECBEG+1,'WETG_BU_RSV')
     CALL BUDGET (UNPACK(ZQRS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                          12+NSV_ELECBEG+2,'WETG_BU_RSV')
+                                          NBUDGET_SV1-1+NSV_ELECBEG+2,'WETG_BU_RSV')
     CALL BUDGET (UNPACK(ZQIS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                          12+NSV_ELECBEG+3,'WETG_BU_RSV')
+                                          NBUDGET_SV1-1+NSV_ELECBEG+3,'WETG_BU_RSV')
     CALL BUDGET (UNPACK(ZQSS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                          12+NSV_ELECBEG+4,'WETG_BU_RSV')
+                                          NBUDGET_SV1-1+NSV_ELECBEG+4,'WETG_BU_RSV')
     CALL BUDGET (UNPACK(ZQGS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                            12+NSV_ELECEND,'WETG_BU_RSV')
+                                            NBUDGET_SV1-1+NSV_ELECEND,'WETG_BU_RSV')
   END IF
 !
   WHERE (ZRGT(:) > XRTMIN(6) .AND. ZZT(:) < XTT .AND. & ! Dry
@@ -3806,34 +3806,34 @@ IMPLICIT NONE
 !
   IF (LBUDGET_TH) CALL BUDGET (                                                &
                  UNPACK(ZTHS(:),MASK=GMICRO(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),  &
-                                                              4,'DRYG_BU_RTH')
+                                                      NBUDGET_TH,'DRYG_BU_RTH')
   IF (LBUDGET_RC) CALL BUDGET (                                                &
                      UNPACK(ZRCS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),   &
-                                                              7,'DRYG_BU_RRC')
+                                                      NBUDGET_RC,'DRYG_BU_RRC')
   IF (LBUDGET_RR) CALL BUDGET (                                                &
                      UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),   &
-                                                              8,'DRYG_BU_RRR')
+                                                      NBUDGET_RR,'DRYG_BU_RRR')
   IF (LBUDGET_RI) CALL BUDGET (                                                &
                      UNPACK(ZRIS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),   &
-                                                              9,'DRYG_BU_RRI')
+                                                      NBUDGET_RI,'DRYG_BU_RRI')
   IF (LBUDGET_RS) CALL BUDGET (                                                &
                      UNPACK(ZRSS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),   &
-                                                             10,'DRYG_BU_RRS')
+                                                      NBUDGET_RS,'DRYG_BU_RRS')
   IF (LBUDGET_RG) CALL BUDGET (                                                &
                      UNPACK(ZRGS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),   &
-                                                             11,'DRYG_BU_RRG')
+                                                      NBUDGET_RG,'DRYG_BU_RRG')
 !
   IF (LBUDGET_SV) THEN
     CALL BUDGET (UNPACK(ZQCS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                          12+NSV_ELECBEG+1,'DRYG_BU_RSV')
+                                          NBUDGET_SV1-1+NSV_ELECBEG+1,'DRYG_BU_RSV')
     CALL BUDGET (UNPACK(ZQRS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                          12+NSV_ELECBEG+2,'DRYG_BU_RSV')
+                                          NBUDGET_SV1-1+NSV_ELECBEG+2,'DRYG_BU_RSV')
     CALL BUDGET (UNPACK(ZQIS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                          12+NSV_ELECBEG+3,'DRYG_BU_RSV')
+                                          NBUDGET_SV1-1+NSV_ELECBEG+3,'DRYG_BU_RSV')
     CALL BUDGET (UNPACK(ZQSS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                          12+NSV_ELECBEG+4,'DRYG_BU_RSV')
+                                          NBUDGET_SV1-1+NSV_ELECBEG+4,'DRYG_BU_RSV')
     CALL BUDGET (UNPACK(ZQGS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                            12+NSV_ELECEND,'DRYG_BU_RSV')
+                                            NBUDGET_SV1-1+NSV_ELECEND,'DRYG_BU_RSV')
   END IF
 !
 !
@@ -3853,9 +3853,9 @@ IMPLICIT NONE
 !
   IF (LBUDGET_SV) THEN
     CALL BUDGET (UNPACK(ZQCS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                          12+NSV_ELECBEG+1,'INCG_BU_RSV')
+                                          NBUDGET_SV1-1+NSV_ELECBEG+1,'INCG_BU_RSV')
     CALL BUDGET (UNPACK(ZQGS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                            12+NSV_ELECEND,'INCG_BU_RSV')
+                                            NBUDGET_SV1-1+NSV_ELECEND,'INCG_BU_RSV')
   END IF
 !
 !
@@ -3892,19 +3892,19 @@ IMPLICIT NONE
 !
     IF (LBUDGET_TH) CALL BUDGET (                                              &
                    UNPACK(ZTHS(:),MASK=GMICRO(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),&
-                                                                4,'GMLT_BU_RTH')
+                                                      NBUDGET_TH,'GMLT_BU_RTH')
     IF (LBUDGET_RR) CALL BUDGET (                                              &
                        UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0), &
-                                                                8,'GMLT_BU_RRR')
+                                                      NBUDGET_RR,'GMLT_BU_RRR')
     IF (LBUDGET_RG) CALL BUDGET (                                              &
                        UNPACK(ZRGS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0), &
-                                                               11,'GMLT_BU_RRG')
+                                                      NBUDGET_RG,'GMLT_BU_RRG')
 !
     IF (LBUDGET_SV) THEN
       CALL BUDGET (UNPACK(ZQRS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                            12+NSV_ELECBEG+2,'GMLT_BU_RSV')
+                                            NBUDGET_SV1-1+NSV_ELECBEG+2,'GMLT_BU_RSV')
       CALL BUDGET (UNPACK(ZQGS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                              12+NSV_ELECEND,'GMLT_BU_RSV')
+                                              NBUDGET_SV1-1+NSV_ELECEND,'GMLT_BU_RSV')
     END IF
 !
   END SUBROUTINE RAIN_ICE_ELEC_FAST_RG
@@ -4133,25 +4133,25 @@ IMPLICIT NONE
 
   IF (LBUDGET_TH) CALL BUDGET (                                              &
                  UNPACK(ZTHS(:),MASK=GMICRO(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),&
-                                                              4,'WETH_BU_RTH')
+                                                            NBUDGET_TH,'WETH_BU_RTH')
   IF (LBUDGET_RC) CALL BUDGET (                                          &
                  UNPACK(ZRCS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0), &
-                                                              7,'WETH_BU_RRC')
+                                                            NBUDGET_RC,'WETH_BU_RRC')
   IF (LBUDGET_RR) CALL BUDGET (                                          &
                  UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0), &
-                                                              8,'WETH_BU_RRR')
+                                                            NBUDGET_RR,'WETH_BU_RRR')
   IF (LBUDGET_RI) CALL BUDGET (                                          &
                  UNPACK(ZRIS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0), &
-                                                              9,'WETH_BU_RRI')
+                                                            NBUDGET_RI,'WETH_BU_RRI')
   IF (LBUDGET_RS) CALL BUDGET (                                          &
                  UNPACK(ZRSS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0), &
-                                                             10,'WETH_BU_RRS')
+                                                            NBUDGET_RS,'WETH_BU_RRS')
   IF (LBUDGET_RG) CALL BUDGET (                                          &
                  UNPACK(ZRGS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0), &
-                                                             11,'WETH_BU_RRG')
+                                                            NBUDGET_RG,'WETH_BU_RRG')
   IF (LBUDGET_RH) CALL BUDGET (                                          &
                  UNPACK(ZRHS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0), &
-                                                             12,'WETH_BU_RRH')
+                                                            NBUDGET_RH,'WETH_BU_RRH')
 !
   IF (IHAIL > 0) THEN
 !
@@ -4192,13 +4192,13 @@ IMPLICIT NONE
 !
   IF (LBUDGET_TH) CALL BUDGET (                                              &
                  UNPACK(ZTHS(:),MASK=GMICRO(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),&
-                                                             4,'HMLT_BU_RTH')
+                                                            NBUDGET_TH,'HMLT_BU_RTH')
   IF (LBUDGET_RR) CALL BUDGET (                                              &
                      UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0), &
-                                                              8,'HMLT_BU_RRR')
+                                                            NBUDGET_RR,'HMLT_BU_RRR')
   IF (LBUDGET_RH) CALL BUDGET (                                              &
                      UNPACK(ZRHS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0), &
-                                                             12,'HMLT_BU_RRH')
+                                                            NBUDGET_RH,'HMLT_BU_RRH')
 !
   END SUBROUTINE RAIN_ICE_ELEC_FAST_RH
 !
@@ -4230,19 +4230,19 @@ IMPLICIT NONE
 !
   IF (LBUDGET_TH) CALL BUDGET (                                                &
                  UNPACK(ZTHS(:),MASK=GMICRO(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),  &
-                                                              4,'IMLT_BU_RTH')
+                                                              NBUDGET_TH,'IMLT_BU_RTH')
   IF (LBUDGET_RC) CALL BUDGET (                                                &
                      UNPACK(ZRCS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),   &
-                                                              7,'IMLT_BU_RRC')
+                                                              NBUDGET_RC,'IMLT_BU_RRC')
   IF (LBUDGET_RI) CALL BUDGET (                                                &
                      UNPACK(ZRIS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),   &
-                                                              9,'IMLT_BU_RRI')
+                                                              NBUDGET_RI,'IMLT_BU_RRI')
 !
   IF (LBUDGET_SV) THEN
     CALL BUDGET (UNPACK(ZQCS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                          12+NSV_ELECBEG+1,'IMLT_BU_RSV')
+                                          NBUDGET_SV1-1+NSV_ELECBEG+1,'IMLT_BU_RSV')
     CALL BUDGET (UNPACK(ZQIS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                          12+NSV_ELECBEG+3,'IMLT_BU_RSV')
+                                          NBUDGET_SV1-1+NSV_ELECBEG+3,'IMLT_BU_RSV')
   END IF
 !
 !*       7.2    Bergeron-Findeisen effect: RCBERI
@@ -4272,19 +4272,19 @@ IMPLICIT NONE
 !
   IF (LBUDGET_TH) CALL BUDGET (                                                &
                  UNPACK(ZTHS(:),MASK=GMICRO(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),  &
-                                                             4,'BERFI_BU_RTH')
+                                                             NBUDGET_TH,'BERFI_BU_RTH')
   IF (LBUDGET_RC) CALL BUDGET (                                                &
                      UNPACK(ZRCS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),   &
-                                                             7,'BERFI_BU_RRC')
+                                                             NBUDGET_RC,'BERFI_BU_RRC')
   IF (LBUDGET_RI) CALL BUDGET (                                                &
                      UNPACK(ZRIS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),   &
-                                                             9,'BERFI_BU_RRI')
+                                                             NBUDGET_RI,'BERFI_BU_RRI')
 !
   IF (LBUDGET_SV) THEN
     CALL BUDGET (UNPACK(ZQCS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                         12+NSV_ELECBEG+1,'BERFI_BU_RSV')
+                                         NBUDGET_SV1-1+NSV_ELECBEG+1,'BERFI_BU_RSV')
     CALL BUDGET (UNPACK(ZQIS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                         12+NSV_ELECBEG+3,'BERFI_BU_RSV')
+                                         NBUDGET_SV1-1+NSV_ELECBEG+3,'BERFI_BU_RSV')
   END IF
 !
   END SUBROUTINE RAIN_ICE_ELEC_FAST_RI
diff --git a/src/MNH/rain_ice_fast_rg.f90 b/src/MNH/rain_ice_fast_rg.f90
index 7c2b0aeb7..33a65180b 100644
--- a/src/MNH/rain_ice_fast_rg.f90
+++ b/src/MNH/rain_ice_fast_rg.f90
@@ -28,7 +28,8 @@ SUBROUTINE RAIN_ICE_FAST_RG(KRR, OMICRO, PRHODREF, PRVT, PRCT, PRRT, PRIT, PRST,
 !*      0. DECLARATIONS
 !          ------------
 !
-use MODD_BUDGET,         only: LBUDGET_RC, LBUDGET_RG, LBUDGET_RH, LBUDGET_RI, LBUDGET_RR, LBUDGET_RS, LBUDGET_TH
+use MODD_BUDGET,         only: LBUDGET_TH, LBUDGET_RC, LBUDGET_RR, LBUDGET_RI, LBUDGET_RS, LBUDGET_RG, LBUDGET_RH, &
+                               NBUDGET_TH, NBUDGET_RC, NBUDGET_RR, NBUDGET_RI, NBUDGET_RS, NBUDGET_RG, NBUDGET_RH
 use MODD_CST,            only: XCI, XCL, XCPV, XESTT, XLMTT, XLVTT, XMD, XMV, XRV, XTT
 use MODD_RAIN_ICE_DESCR, only: XBS, XCEXVT, XCXG, XCXS, XDG, XRTMIN
 use MODD_RAIN_ICE_PARAM, only: NDRYLBDAG, NDRYLBDAR, NDRYLBDAS, X0DEPG, X1DEPG, XCOLEXIG, XCOLEXSG, XCOLIG, XCOLSG, XDRYINTP1G, &
@@ -106,16 +107,16 @@ REAL,    DIMENSION(size(PRHODREF),7) :: ZZW1              ! Work arrays
   END WHERE
   IF (LBUDGET_TH) CALL BUDGET (                                                 &
                  UNPACK(PTHS(:),MASK=OMICRO(:,:,:),FIELD=PTHS3D)*PRHODJ3D(:,:,:),   &
-                                                              4,'CFRZ_BU_RTH')
+                                                        NBUDGET_TH,'CFRZ_BU_RTH')
   IF (LBUDGET_RR) CALL BUDGET (                                                 &
                      UNPACK(PRRS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                              8,'CFRZ_BU_RRR')
+                                                        NBUDGET_RR,'CFRZ_BU_RRR')
   IF (LBUDGET_RI) CALL BUDGET (                                                 &
                      UNPACK(PRIS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                              9,'CFRZ_BU_RRI')
+                                                        NBUDGET_RI,'CFRZ_BU_RRI')
   IF (LBUDGET_RG) CALL BUDGET (                                                 &
                      UNPACK(PRGS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                             11,'CFRZ_BU_RRG')
+                                                        NBUDGET_RG,'CFRZ_BU_RRG')
 !
 !*       6.2    compute the Dry growth case
 !
@@ -346,26 +347,26 @@ REAL,    DIMENSION(size(PRHODREF),7) :: ZZW1              ! Work arrays
  END IF
   IF (LBUDGET_TH) CALL BUDGET (                                                 &
                  UNPACK(PTHS(:),MASK=OMICRO(:,:,:),FIELD=PTHS3D)*PRHODJ3D(:,:,:),   &
-                                                              4,'WETG_BU_RTH')
+                                                        NBUDGET_TH,'WETG_BU_RTH')
   IF (LBUDGET_RC) CALL BUDGET (                                                 &
                      UNPACK(PRCS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                              7,'WETG_BU_RRC')
+                                                        NBUDGET_RC,'WETG_BU_RRC')
   IF (LBUDGET_RR) CALL BUDGET (                                                 &
                      UNPACK(PRRS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                              8,'WETG_BU_RRR')
+                                                        NBUDGET_RR,'WETG_BU_RRR')
   IF (LBUDGET_RI) CALL BUDGET (                                                 &
                      UNPACK(PRIS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                              9,'WETG_BU_RRI')
+                                                        NBUDGET_RI,'WETG_BU_RRI')
   IF (LBUDGET_RS) CALL BUDGET (                                                 &
                      UNPACK(PRSS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                             10,'WETG_BU_RRS')
+                                                        NBUDGET_RS,'WETG_BU_RRS')
   IF (LBUDGET_RG) CALL BUDGET (                                                 &
                      UNPACK(PRGS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                             11,'WETG_BU_RRG')
+                                                        NBUDGET_RG,'WETG_BU_RRG')
   IF ( KRR == 7 ) THEN
-    IF (LBUDGET_RH) CALL BUDGET (                                                 &
+    IF (LBUDGET_RH) CALL BUDGET (                                               &
                      UNPACK(PRHS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                             12,'WETG_BU_RRH')
+                                                        NBUDGET_RH,'WETG_BU_RRH')
   END IF
 
 !
@@ -382,22 +383,22 @@ REAL,    DIMENSION(size(PRHODREF),7) :: ZZW1              ! Work arrays
   END WHERE
   IF (LBUDGET_TH) CALL BUDGET (                                                    &
                  UNPACK(PTHS(:),MASK=OMICRO(:,:,:),FIELD=PTHS3D)*PRHODJ3D(:,:,:),   &
-                                                              4,'DRYG_BU_RTH')
+                                                        NBUDGET_TH,'DRYG_BU_RTH')
   IF (LBUDGET_RC) CALL BUDGET (                                                 &
                      UNPACK(PRCS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                              7,'DRYG_BU_RRC')
+                                                        NBUDGET_RC,'DRYG_BU_RRC')
   IF (LBUDGET_RR) CALL BUDGET (                                                 &
                      UNPACK(PRRS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                              8,'DRYG_BU_RRR')
+                                                        NBUDGET_RR,'DRYG_BU_RRR')
   IF (LBUDGET_RI) CALL BUDGET (                                                 &
                      UNPACK(PRIS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                              9,'DRYG_BU_RRI')
+                                                        NBUDGET_RI,'DRYG_BU_RRI')
   IF (LBUDGET_RS) CALL BUDGET (                                                 &
                      UNPACK(PRSS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                             10,'DRYG_BU_RRS')
+                                                        NBUDGET_RS,'DRYG_BU_RRS')
   IF (LBUDGET_RG) CALL BUDGET (                                                 &
                      UNPACK(PRGS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                             11,'DRYG_BU_RRG')
+                                                        NBUDGET_RG,'DRYG_BU_RRG')
 !
 !      WHERE ( PZT(:) > XTT ) ! RSWETG case only
 !        PRSS(:) = PRSS(:) - ZZW1(:,6)
@@ -426,13 +427,13 @@ REAL,    DIMENSION(size(PRHODREF),7) :: ZZW1              ! Work arrays
   END WHERE
     IF (LBUDGET_TH) CALL BUDGET (                                                 &
                    UNPACK(PTHS(:),MASK=OMICRO(:,:,:),FIELD=PTHS3D)*PRHODJ3D(:,:,:),   &
-                                                                4,'GMLT_BU_RTH')
+                                                          NBUDGET_TH,'GMLT_BU_RTH')
     IF (LBUDGET_RR) CALL BUDGET (                                                 &
                        UNPACK(PRRS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                                8,'GMLT_BU_RRR')
+                                                          NBUDGET_RR,'GMLT_BU_RRR')
     IF (LBUDGET_RG) CALL BUDGET (                                                 &
                        UNPACK(PRGS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                               11,'GMLT_BU_RRG')
+                                                          NBUDGET_RG,'GMLT_BU_RRG')
 !
 END SUBROUTINE RAIN_ICE_FAST_RG
 
diff --git a/src/MNH/rain_ice_fast_rh.f90 b/src/MNH/rain_ice_fast_rh.f90
index cedf7ceb4..5b83463e8 100644
--- a/src/MNH/rain_ice_fast_rh.f90
+++ b/src/MNH/rain_ice_fast_rh.f90
@@ -26,7 +26,8 @@ SUBROUTINE RAIN_ICE_FAST_RH(OMICRO, PRHODREF, PRVT, PRCT, PRIT, PRST, PRGT, PRHT
 !*      0. DECLARATIONS
 !          ------------
 !
-use MODD_BUDGET,         only: LBUDGET_RC, LBUDGET_RG, LBUDGET_RH, LBUDGET_RI, LBUDGET_RR, LBUDGET_RS, LBUDGET_TH
+use MODD_BUDGET,         only: LBUDGET_TH, LBUDGET_RC, LBUDGET_RR, LBUDGET_RI, LBUDGET_RS, LBUDGET_RG, LBUDGET_RH, &
+                               NBUDGET_TH, NBUDGET_RC, NBUDGET_RR, NBUDGET_RI, NBUDGET_RS, NBUDGET_RG, NBUDGET_RH
 use MODD_CST,            only: XCI, XCL, XCPV, XESTT, XLMTT, XLVTT, XMD, XMV, XRV, XTT
 use MODD_RAIN_ICE_DESCR, only: XBG, XBS, XCEXVT, XCXG, XCXH, XCXS, XDH, XLBEXH, XLBH, XRTMIN
 use MODD_RAIN_ICE_PARAM, only: NWETLBDAG, NWETLBDAH, NWETLBDAS, X0DEPH, X1DEPH, &
@@ -302,25 +303,25 @@ REAL,    DIMENSION(size(PRHODREF),6) :: ZZW1              ! Work arrays
   END IF
     IF (LBUDGET_TH) CALL BUDGET (                                                 &
                    UNPACK(PTHS(:),MASK=OMICRO(:,:,:),FIELD=PTHS3D)*PRHODJ3D(:,:,:),&
-                                                                4,'WETH_BU_RTH')
+                                                          NBUDGET_TH,'WETH_BU_RTH')
     IF (LBUDGET_RC) CALL BUDGET (                                                 &
                        UNPACK(PRCS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0), &
-                                                                7,'WETH_BU_RRC')
+                                                          NBUDGET_RC,'WETH_BU_RRC')
     IF (LBUDGET_RR) CALL BUDGET (                                                 &
                        UNPACK(PRRS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0), &
-                                                                8,'WETH_BU_RRR')
+                                                          NBUDGET_RR,'WETH_BU_RRR')
     IF (LBUDGET_RI) CALL BUDGET (                                                 &
                        UNPACK(PRIS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0), &
-                                                                9,'WETH_BU_RRI')
+                                                          NBUDGET_RI,'WETH_BU_RRI')
     IF (LBUDGET_RS) CALL BUDGET (                                                 &
                        UNPACK(PRSS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0), &
-                                                               10,'WETH_BU_RRS')
+                                                          NBUDGET_RS,'WETH_BU_RRS')
     IF (LBUDGET_RG) CALL BUDGET (                                                 &
                        UNPACK(PRGS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0), &
-                                                               11,'WETH_BU_RRG')
+                                                          NBUDGET_RG,'WETH_BU_RRG')
     IF (LBUDGET_RH) CALL BUDGET (                                                 &
                        UNPACK(PRHS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0), &
-                                                               12,'WETH_BU_RRH')
+                                                          NBUDGET_RH,'WETH_BU_RRH')
 !
 !
 ! ici LRECONVH et un flag pour autoriser une reconversion partielle de
@@ -377,13 +378,13 @@ REAL,    DIMENSION(size(PRHODREF),6) :: ZZW1              ! Work arrays
 
     IF (LBUDGET_TH) CALL BUDGET (                                                 &
                    UNPACK(PTHS(:),MASK=OMICRO(:,:,:),FIELD=PTHS3D)*PRHODJ3D(:,:,:),&
-                                                                4,'HMLT_BU_RTH')
+                                                          NBUDGET_TH,'HMLT_BU_RTH')
     IF (LBUDGET_RR) CALL BUDGET (                                                 &
                        UNPACK(PRRS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0), &
-                                                                8,'HMLT_BU_RRR')
+                                                          NBUDGET_RR,'HMLT_BU_RRR')
     IF (LBUDGET_RH) CALL BUDGET (                                                 &
                        UNPACK(PRHS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0), &
-                                                               12,'HMLT_BU_RRH')
+                                                          NBUDGET_RH,'HMLT_BU_RRH')
 !
 END SUBROUTINE RAIN_ICE_FAST_RH
 
diff --git a/src/MNH/rain_ice_fast_ri.f90 b/src/MNH/rain_ice_fast_ri.f90
index 782f79c9e..67b9c2331 100644
--- a/src/MNH/rain_ice_fast_ri.f90
+++ b/src/MNH/rain_ice_fast_ri.f90
@@ -23,7 +23,8 @@ SUBROUTINE RAIN_ICE_FAST_RI(OMICRO, PRHODREF, PRIT, PRHODJ, PZT, PSSI, PLSFACT,
 !*      0. DECLARATIONS
 !          ------------
 !
-use MODD_BUDGET,         only: LBUDGET_RC, LBUDGET_RI, LBUDGET_TH
+use MODD_BUDGET,         only: LBUDGET_TH, LBUDGET_RC, LBUDGET_RI, &
+                               NBUDGET_TH, NBUDGET_RC, NBUDGET_RI
 use MODD_CST,            only: XTT
 use MODD_RAIN_ICE_DESCR, only: XDI, XLBEXI, XLBI, XRTMIN
 use MODD_RAIN_ICE_PARAM, only: X0DEPI, X2DEPI
@@ -66,13 +67,13 @@ REAL, DIMENSION(size(PRHODREF)) :: ZZW  ! Work array
   END WHERE
   IF (LBUDGET_TH) CALL BUDGET (                                                 &
                  UNPACK(PTHS(:),MASK=OMICRO(:,:,:),FIELD=PTHS3D)*PRHODJ3D(:,:,:),   &
-                                                              4,'IMLT_BU_RTH')
+                                                        NBUDGET_TH,'IMLT_BU_RTH')
   IF (LBUDGET_RC) CALL BUDGET (                                                 &
                      UNPACK(PRCS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                              7,'IMLT_BU_RRC')
+                                                        NBUDGET_RC,'IMLT_BU_RRC')
   IF (LBUDGET_RI) CALL BUDGET (                                                 &
                      UNPACK(PRIS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                              9,'IMLT_BU_RRI')
+                                                        NBUDGET_RI,'IMLT_BU_RRI')
 !
 !*       7.2    Bergeron-Findeisen effect: RCBERI
 !
@@ -86,13 +87,13 @@ REAL, DIMENSION(size(PRHODREF)) :: ZZW  ! Work array
   END WHERE
   IF (LBUDGET_TH) CALL BUDGET (                                                 &
                  UNPACK(PTHS(:),MASK=OMICRO(:,:,:),FIELD=PTHS3D)*PRHODJ3D(:,:,:),   &
-                                                             4,'BERFI_BU_RTH')
+                                                        NBUDGET_TH,'BERFI_BU_RTH')
   IF (LBUDGET_RC) CALL BUDGET (                                                 &
                      UNPACK(PRCS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                             7,'BERFI_BU_RRC')
+                                                        NBUDGET_RC,'BERFI_BU_RRC')
   IF (LBUDGET_RI) CALL BUDGET (                                                 &
                      UNPACK(PRIS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                             9,'BERFI_BU_RRI')
+                                                        NBUDGET_RI,'BERFI_BU_RRI')
 !
 END SUBROUTINE RAIN_ICE_FAST_RI
 
diff --git a/src/MNH/rain_ice_fast_rs.f90 b/src/MNH/rain_ice_fast_rs.f90
index 5f5f9713e..49d7cec95 100644
--- a/src/MNH/rain_ice_fast_rs.f90
+++ b/src/MNH/rain_ice_fast_rs.f90
@@ -26,7 +26,8 @@ SUBROUTINE RAIN_ICE_FAST_RS(PTSTEP, OMICRO, PRHODREF, PRVT, PRCT, PRRT, PRST, PR
 !*      0. DECLARATIONS
 !          ------------
 !
-use MODD_BUDGET,         only: LBUDGET_RC, LBUDGET_RG, LBUDGET_RR, LBUDGET_RS, LBUDGET_TH
+use MODD_BUDGET,         only: LBUDGET_TH, LBUDGET_RC, LBUDGET_RR, LBUDGET_RS, LBUDGET_RG, &
+                               NBUDGET_TH, NBUDGET_RC, NBUDGET_RR, NBUDGET_RS, NBUDGET_RG
 use MODD_CST,            only: XCL, XCPV, XESTT, XLMTT, XLVTT, XMD, XMV, XRV, XTT
 use MODD_RAIN_ICE_DESCR, only: XBS, XCEXVT, XCXS, XRTMIN
 use MODD_RAIN_ICE_PARAM, only: NACCLBDAR, NACCLBDAS, NGAMINC, X0DEPS, X1DEPS, XACCINTP1R, XACCINTP1S, XACCINTP2R, XACCINTP2S, &
@@ -169,16 +170,16 @@ REAL,    DIMENSION(:), ALLOCATABLE :: ZZW1, ZZW2, ZZW3, ZZW4 ! Work arrays
   END IF
   IF (LBUDGET_TH) CALL BUDGET (                                               &
                UNPACK(PTHS(:),MASK=OMICRO(:,:,:),FIELD=PTHS3D)*PRHODJ3D(:,:,:),   &
-                                                             4,'RIM_BU_RTH')
+                                                      NBUDGET_TH,'RIM_BU_RTH')
   IF (LBUDGET_RC) CALL BUDGET (                                               &
                    UNPACK(PRCS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                             7,'RIM_BU_RRC')
+                                                      NBUDGET_RC,'RIM_BU_RRC')
   IF (LBUDGET_RS) CALL BUDGET (                                               &
                    UNPACK(PRSS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                            10,'RIM_BU_RRS')
+                                                      NBUDGET_RS,'RIM_BU_RRS')
   IF (LBUDGET_RG) CALL BUDGET (                                               &
                    UNPACK(PRGS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                            11,'RIM_BU_RRG')
+                                                      NBUDGET_RG,'RIM_BU_RRG')
 !
 !*       5.2    rain accretion onto the aggregates
 !
@@ -312,16 +313,16 @@ REAL,    DIMENSION(:), ALLOCATABLE :: ZZW1, ZZW2, ZZW3, ZZW4 ! Work arrays
   END IF
   IF (LBUDGET_TH) CALL BUDGET (                                               &
                UNPACK(PTHS(:),MASK=OMICRO(:,:,:),FIELD=PTHS3D)*PRHODJ3D(:,:,:),   &
-                                                             4,'ACC_BU_RTH')
+                                                        NBUDGET_TH,'ACC_BU_RTH')
   IF (LBUDGET_RR) CALL BUDGET (                                               &
                    UNPACK(PRRS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                             8,'ACC_BU_RRR')
+                                                        NBUDGET_RR,'ACC_BU_RRR')
   IF (LBUDGET_RS) CALL BUDGET (                                               &
                    UNPACK(PRSS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                            10,'ACC_BU_RRS')
+                                                        NBUDGET_RS,'ACC_BU_RRS')
   IF (LBUDGET_RG) CALL BUDGET (                                               &
                    UNPACK(PRGS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                            11,'ACC_BU_RRG')
+                                                        NBUDGET_RG,'ACC_BU_RRG')
 !
 !*       5.3    Conversion-Melting of the aggregates
 !
@@ -346,10 +347,10 @@ REAL,    DIMENSION(:), ALLOCATABLE :: ZZW1, ZZW2, ZZW3, ZZW4 ! Work arrays
   END WHERE
   IF (LBUDGET_RS) CALL BUDGET (                                                 &
                      UNPACK(PRSS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                             10,'CMEL_BU_RRS')
+                                                             NBUDGET_RS,'CMEL_BU_RRS')
   IF (LBUDGET_RG) CALL BUDGET (                                                 &
                      UNPACK(PRGS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                             11,'CMEL_BU_RRG')
+                                                             NBUDGET_RG,'CMEL_BU_RRG')
 !
 END SUBROUTINE RAIN_ICE_FAST_RS
 
diff --git a/src/MNH/rain_ice_nucleation.f90 b/src/MNH/rain_ice_nucleation.f90
index 959c7bb0d..bcc4e79fd 100644
--- a/src/MNH/rain_ice_nucleation.f90
+++ b/src/MNH/rain_ice_nucleation.f90
@@ -25,7 +25,8 @@ SUBROUTINE RAIN_ICE_NUCLEATION(KIB, KIE, KJB, KJE, KKTB, KKTE,KRR,PTSTEP,&
 !*      0. DECLARATIONS
 !          ------------
 !
-use MODD_BUDGET,          only: LBUDGET_RI, LBUDGET_RV, LBUDGET_TH
+use MODD_BUDGET,          only: LBUDGET_RI, LBUDGET_RV, LBUDGET_TH, &
+                                NBUDGET_TH, NBUDGET_RV, NBUDGET_RI
 use MODD_CST,             only: XALPI, XALPW, XBETAI, XBETAW, XCI, XCL, XCPD, XCPV, XGAMI, XGAMW, &
                                 XLSTT, XMD, XMV, XP00, XRD, XTT
 use MODD_RAIN_ICE_PARAM,  only: XALPHA1, XALPHA2, XBETA1, XBETA2, XMNU0, XNU10, XNU20
@@ -166,9 +167,9 @@ END IF
 !
 !*       3.1.3   budget storage
 !
-IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'HENU_BU_RTH')
-IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),6,'HENU_BU_RRV')
-IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9,'HENU_BU_RRI')
+IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'HENU_BU_RTH')
+IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RV,'HENU_BU_RRV')
+IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RI,'HENU_BU_RRI')
 !
 END SUBROUTINE RAIN_ICE_NUCLEATION
 
diff --git a/src/MNH/rain_ice_red.f90 b/src/MNH/rain_ice_red.f90
index 321d59013..22b85cbcc 100644
--- a/src/MNH/rain_ice_red.f90
+++ b/src/MNH/rain_ice_red.f90
@@ -246,7 +246,9 @@ END MODULE MODI_RAIN_ICE_RED
 !*       0.    DECLARATIONS
 !              ------------
 !
-USE MODD_BUDGET,         ONLY: LBU_ENABLE,LBUDGET_RC,LBUDGET_RR,LBUDGET_RI,LBUDGET_RS,LBUDGET_RG,LBUDGET_RH,LBUDGET_RV,LBUDGET_TH
+USE MODD_BUDGET,         ONLY: LBU_ENABLE,                                                                                     &
+                               LBUDGET_TH, LBUDGET_RV, LBUDGET_RC, LBUDGET_RR, LBUDGET_RI, LBUDGET_RS, LBUDGET_RG, LBUDGET_RH, &
+                               NBUDGET_TH, NBUDGET_RV, NBUDGET_RC, NBUDGET_RR, NBUDGET_RI, NBUDGET_RS, NBUDGET_RG, NBUDGET_RH
 USE MODD_CST,            ONLY: XCI,XCL,XCPD,XCPV,XLSTT,XLVTT,XTT
 USE MODD_PARAMETERS,     ONLY: JPVEXT,XUNDEF
 USE MODD_PARAM_ICE,      ONLY: CSUBG_PR_PDF,CSUBG_RC_RR_ACCR,CSUBG_RR_EVAP,LDEPOSC,LFEEDBACKT,LSEDIM_AFTER, &
@@ -588,15 +590,15 @@ IF(.NOT. LSEDIM_AFTER) THEN
   !*       2.2     budget storage
   !
   IF (LBUDGET_RC .AND. OSEDIC) &
-                  CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:), 7 , 'SEDI_BU_RRC')
-  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:), 8 , 'SEDI_BU_RRR')
-  IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:), 9 , 'SEDI_BU_RRI')
-  IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:), 10, 'SEDI_BU_RRS')
-  IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:), 11, 'SEDI_BU_RRG')
+                  CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC, 'SEDI_BU_RRC')
+  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR, 'SEDI_BU_RRR')
+  IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RI, 'SEDI_BU_RRI')
+  IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RS, 'SEDI_BU_RRS')
+  IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RG, 'SEDI_BU_RRG')
   IF ( KRR == 7 .AND. LBUDGET_RH) &
-                  CALL BUDGET (PRHS(:,:,:)*PRHODJ(:,:,:), 12, 'SEDI_BU_RRH')
+                  CALL BUDGET (PRHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RH, 'SEDI_BU_RRH')
   IF ( LBUDGET_RC .AND. LDEPOSC ) &
-   CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7 ,'DEPO_BU_RRC')
+   CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC,'DEPO_BU_RRC')
 ENDIF
 !
 !-------------------------------------------------------------------------------
@@ -1124,9 +1126,9 @@ IF(LBU_ENABLE) THEN
   PRIS(:,:,:) = PRIS(:,:,:) + ZW(:,:,:)
   PRVS(:,:,:) = PRVS(:,:,:) - ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*ZZ_LSFACT(:,:,:)
-  IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), 4, 'HENU_BU_RTH')
-  IF (LBUDGET_RV) CALL BUDGET(PRVS(:,:,:)*PRHODJ(:,:,:), 6, 'HENU_BU_RRV')
-  IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), 9, 'HENU_BU_RRI')
+  IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH, 'HENU_BU_RTH')
+  IF (LBUDGET_RV) CALL BUDGET(PRVS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RV, 'HENU_BU_RRV')
+  IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RI, 'HENU_BU_RRI')
 
   ZW(:,:,:) = 0.
   DO JL=1,IMICRO
@@ -1135,9 +1137,9 @@ IF(LBU_ENABLE) THEN
   PRIS(:,:,:) = PRIS(:,:,:) + ZW(:,:,:)
   PRCS(:,:,:) = PRCS(:,:,:) - ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
-  IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), 4, 'HON_BU_RTH')
-  IF (LBUDGET_RC) CALL BUDGET(PRCS(:,:,:)*PRHODJ(:,:,:), 7, 'HON_BU_RRC')
-  IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), 9, 'HON_BU_RRI')
+  IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH, 'HON_BU_RTH')
+  IF (LBUDGET_RC) CALL BUDGET(PRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC, 'HON_BU_RRC')
+  IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RI, 'HON_BU_RRI')
 
   ZW(:,:,:) = 0.
   DO JL=1,IMICRO
@@ -1146,9 +1148,9 @@ IF(LBU_ENABLE) THEN
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   PRRS(:,:,:) = PRRS(:,:,:) - ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
-  IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), 4, 'SFR_BU_RTH')
-  IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), 8, 'SFR_BU_RRR')
-  IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), 11,'SFR_BU_RRG')
+  IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH, 'SFR_BU_RTH')
+  IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR, 'SFR_BU_RRR')
+  IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RG,'SFR_BU_RRG')
 
   ZW(:,:,:) = 0.
   DO JL=1,IMICRO
@@ -1157,9 +1159,9 @@ IF(LBU_ENABLE) THEN
   PRSS(:,:,:) = PRSS(:,:,:) + ZW(:,:,:)
   PRVS(:,:,:) = PRVS(:,:,:) - ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*ZZ_LSFACT(:,:,:)
-  IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), 4, 'DEPS_BU_RTH')
-  IF (LBUDGET_RV) CALL BUDGET(PRVS(:,:,:)*PRHODJ(:,:,:), 6, 'DEPS_BU_RRV')
-  IF (LBUDGET_RS) CALL BUDGET(PRSS(:,:,:)*PRHODJ(:,:,:), 10,'DEPS_BU_RRS')
+  IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH, 'DEPS_BU_RTH')
+  IF (LBUDGET_RV) CALL BUDGET(PRVS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RV, 'DEPS_BU_RRV')
+  IF (LBUDGET_RS) CALL BUDGET(PRSS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RS,'DEPS_BU_RRS')
 
   ZW(:,:,:) = 0.
   DO JL=1,IMICRO
@@ -1167,8 +1169,8 @@ IF(LBU_ENABLE) THEN
   END DO
   PRSS(:,:,:) = PRSS(:,:,:) + ZW(:,:,:)
   PRIS(:,:,:) = PRIS(:,:,:) - ZW(:,:,:)
-  IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), 9, 'AGGS_BU_RRI')
-  IF (LBUDGET_RS) CALL BUDGET(PRSS(:,:,:)*PRHODJ(:,:,:), 10,'AGGS_BU_RRS')
+  IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RI, 'AGGS_BU_RRI')
+  IF (LBUDGET_RS) CALL BUDGET(PRSS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RS,'AGGS_BU_RRS')
 
   ZW(:,:,:) = 0.
   DO JL=1,IMICRO
@@ -1176,8 +1178,8 @@ IF(LBU_ENABLE) THEN
   END DO
   PRSS(:,:,:) = PRSS(:,:,:) + ZW(:,:,:)
   PRIS(:,:,:) = PRIS(:,:,:) - ZW(:,:,:)
-  IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), 9, 'AUTS_BU_RRI')
-  IF (LBUDGET_RS) CALL BUDGET(PRSS(:,:,:)*PRHODJ(:,:,:), 10,'AUTS_BU_RRS')
+  IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RI, 'AUTS_BU_RRI')
+  IF (LBUDGET_RS) CALL BUDGET(PRSS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RS,'AUTS_BU_RRS')
 
   ZW(:,:,:) = 0.
   DO JL=1,IMICRO
@@ -1186,9 +1188,9 @@ IF(LBU_ENABLE) THEN
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   PRVS(:,:,:) = PRVS(:,:,:) - ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*ZZ_LSFACT(:,:,:)
-  IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), 4, 'DEPG_BU_RTH')
-  IF (LBUDGET_RV) CALL BUDGET(PRVS(:,:,:)*PRHODJ(:,:,:), 6, 'DEPG_BU_RRV')
-  IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), 11,'DEPG_BU_RRG')
+  IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH, 'DEPG_BU_RTH')
+  IF (LBUDGET_RV) CALL BUDGET(PRVS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RV, 'DEPG_BU_RRV')
+  IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RG,'DEPG_BU_RRG')
 
   IF(OWARM) THEN
     ZW(:,:,:) = 0.
@@ -1197,8 +1199,8 @@ IF(LBU_ENABLE) THEN
     END DO
     PRCS(:,:,:) = PRCS(:,:,:) - ZW(:,:,:)
     PRRS(:,:,:) = PRRS(:,:,:) + ZW(:,:,:)
-    IF (LBUDGET_RC) CALL BUDGET(PRCS(:,:,:)*PRHODJ(:,:,:), 7, 'AUTO_BU_RRC')
-    IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), 8, 'AUTO_BU_RRR')
+    IF (LBUDGET_RC) CALL BUDGET(PRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC, 'AUTO_BU_RRC')
+    IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR, 'AUTO_BU_RRR')
 
     ZW(:,:,:) = 0.
     DO JL=1,IMICRO
@@ -1206,8 +1208,8 @@ IF(LBU_ENABLE) THEN
     END DO
     PRCS(:,:,:) = PRCS(:,:,:) - ZW(:,:,:)
     PRRS(:,:,:) = PRRS(:,:,:) + ZW(:,:,:)
-    IF (LBUDGET_RC) CALL BUDGET(PRCS(:,:,:)*PRHODJ(:,:,:), 7, 'ACCR_BU_RRC')
-    IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), 8, 'ACCR_BU_RRR')
+    IF (LBUDGET_RC) CALL BUDGET(PRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC, 'ACCR_BU_RRC')
+    IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR, 'ACCR_BU_RRR')
 
     ZW(:,:,:) = 0.
     DO JL=1,IMICRO
@@ -1216,9 +1218,9 @@ IF(LBU_ENABLE) THEN
     PRRS(:,:,:) = PRRS(:,:,:) - ZW(:,:,:)
     PRVS(:,:,:) = PRVS(:,:,:) + ZW(:,:,:)
     PTHS(:,:,:) = PTHS(:,:,:) - ZW(:,:,:)*ZZ_LVFACT(:,:,:)
-    IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), 4, 'REVA_BU_RTH')
-    IF (LBUDGET_RV) CALL BUDGET(PRVS(:,:,:)*PRHODJ(:,:,:), 6, 'REVA_BU_RRV')
-    IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), 8, 'REVA_BU_RRR')
+    IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH, 'REVA_BU_RTH')
+    IF (LBUDGET_RV) CALL BUDGET(PRVS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RV, 'REVA_BU_RRV')
+    IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR, 'REVA_BU_RRR')
   ENDIF
 
   ZW(:,:,:) = 0.
@@ -1241,10 +1243,10 @@ IF(LBU_ENABLE) THEN
   END DO
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   PRSS(:,:,:) = PRSS(:,:,:) - ZW(:,:,:)
-  IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), 4, 'RIM_BU_RTH')
-  IF (LBUDGET_RC) CALL BUDGET(PRCS(:,:,:)*PRHODJ(:,:,:), 7, 'RIM_BU_RRC')
-  IF (LBUDGET_RS) CALL BUDGET(PRSS(:,:,:)*PRHODJ(:,:,:), 10,'RIM_BU_RRS')
-  IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), 11,'RIM_BU_RRG')
+  IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH, 'RIM_BU_RTH')
+  IF (LBUDGET_RC) CALL BUDGET(PRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC, 'RIM_BU_RRC')
+  IF (LBUDGET_RS) CALL BUDGET(PRSS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RS,'RIM_BU_RRS')
+  IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RG,'RIM_BU_RRG')
 
   ZW(:,:,:) = 0.
   DO JL=1,IMICRO
@@ -1266,10 +1268,10 @@ IF(LBU_ENABLE) THEN
   END DO
   PRSS(:,:,:) = PRSS(:,:,:) - ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
-  IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), 4, 'ACC_BU_RTH')
-  IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), 8, 'ACC_BU_RRR')
-  IF (LBUDGET_RS) CALL BUDGET(PRSS(:,:,:)*PRHODJ(:,:,:), 10,'ACC_BU_RRS')
-  IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), 11,'ACC_BU_RRG')
+  IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH, 'ACC_BU_RTH')
+  IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR, 'ACC_BU_RRR')
+  IF (LBUDGET_RS) CALL BUDGET(PRSS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RS,'ACC_BU_RRS')
+  IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RG,'ACC_BU_RRG')
 
   ZW(:,:,:) = 0.
   DO JL=1,IMICRO
@@ -1283,10 +1285,10 @@ IF(LBU_ENABLE) THEN
   END DO
   PRCS(:,:,:) = PRCS(:,:,:) - ZW(:,:,:)
   PRRS(:,:,:) = PRRS(:,:,:) + ZW(:,:,:)
-  IF (LBUDGET_RS) CALL BUDGET(PRSS(:,:,:)*PRHODJ(:,:,:), 10,'CMEL_BU_RRS')
-  IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), 11,'CMEL_BU_RRG')
-  IF (LBUDGET_RC) CALL BUDGET(PRCS(:,:,:)*PRHODJ(:,:,:), 7, 'CMEL_BU_RRC')
-  IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), 8, 'CMEL_BU_RRR')
+  IF (LBUDGET_RS) CALL BUDGET(PRSS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RS,'CMEL_BU_RRS')
+  IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RG,'CMEL_BU_RRG')
+  IF (LBUDGET_RC) CALL BUDGET(PRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC, 'CMEL_BU_RRC')
+  IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR, 'CMEL_BU_RRR')
 
   ZW(:,:,:) = 0.
   DO JL=1,IMICRO
@@ -1307,10 +1309,10 @@ IF(LBU_ENABLE) THEN
   END DO
   PRIS(:,:,:) = PRIS(:,:,:) - ZW(:,:,:)
   PRRS(:,:,:) = PRRS(:,:,:) + ZW(:,:,:)
-  IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), 4, 'CFRZ_BU_RTH')
-  IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), 8, 'CFRZ_BU_RRR')
-  IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), 9, 'CFRZ_BU_RRI')
-  IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), 11,'CFRZ_BU_RRG')
+  IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH, 'CFRZ_BU_RTH')
+  IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR, 'CFRZ_BU_RRR')
+  IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RI, 'CFRZ_BU_RRI')
+  IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RG,'CFRZ_BU_RRG')
 
   ZW(:,:,:) = 0.
   DO JL=1,IMICRO
@@ -1338,12 +1340,12 @@ IF(LBU_ENABLE) THEN
   END DO
   PRSS(:,:,:) = PRSS(:,:,:) - ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
-  IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), 4, 'WETG_BU_RTH')
-  IF (LBUDGET_RC) CALL BUDGET(PRCS(:,:,:)*PRHODJ(:,:,:), 7, 'WETG_BU_RRC')
-  IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), 8, 'WETG_BU_RRR')
-  IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), 9, 'WETG_BU_RRI')
-  IF (LBUDGET_RS) CALL BUDGET(PRSS(:,:,:)*PRHODJ(:,:,:), 10,'WETG_BU_RRS')
-  IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), 11,'WETG_BU_RRG')
+  IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH, 'WETG_BU_RTH')
+  IF (LBUDGET_RC) CALL BUDGET(PRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC, 'WETG_BU_RRC')
+  IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR, 'WETG_BU_RRR')
+  IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RI, 'WETG_BU_RRI')
+  IF (LBUDGET_RS) CALL BUDGET(PRSS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RS,'WETG_BU_RRS')
+  IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RG,'WETG_BU_RRG')
 
   IF(KRR==7) THEN
     ZW(:,:,:) = 0.
@@ -1352,8 +1354,8 @@ IF(LBU_ENABLE) THEN
     END DO
     PRGS(:,:,:) = PRGS(:,:,:) - ZW(:,:,:)
     PRHS(:,:,:) = PRHS(:,:,:) + ZW(:,:,:)
-    IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), 11,'GHCV_BU_RRG')
-    IF (LBUDGET_RH) CALL BUDGET(PRHS(:,:,:)*PRHODJ(:,:,:), 12,'GHCV_BU_RRH')
+    IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RG,'GHCV_BU_RRG')
+    IF (LBUDGET_RH) CALL BUDGET(PRHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RH,'GHCV_BU_RRH')
   END IF
 
   ZW(:,:,:) = 0.
@@ -1382,12 +1384,12 @@ IF(LBU_ENABLE) THEN
   END DO
   PRSS(:,:,:) = PRSS(:,:,:) - ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
-  IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), 4, 'DRYG_BU_RTH')
-  IF (LBUDGET_RC) CALL BUDGET(PRCS(:,:,:)*PRHODJ(:,:,:), 7, 'DRYG_BU_RRC')
-  IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), 8, 'DRYG_BU_RRR')
-  IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), 9, 'DRYG_BU_RRI')
-  IF (LBUDGET_RS) CALL BUDGET(PRSS(:,:,:)*PRHODJ(:,:,:), 10,'DRYG_BU_RRS')
-  IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), 11,'DRYG_BU_RRG')
+  IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH, 'DRYG_BU_RTH')
+  IF (LBUDGET_RC) CALL BUDGET(PRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC, 'DRYG_BU_RRC')
+  IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR, 'DRYG_BU_RRR')
+  IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RI, 'DRYG_BU_RRI')
+  IF (LBUDGET_RS) CALL BUDGET(PRSS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RS,'DRYG_BU_RRS')
+  IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RG,'DRYG_BU_RRG')
 
   ZW(:,:,:) = 0.
   DO JL=1,IMICRO
@@ -1396,9 +1398,9 @@ IF(LBU_ENABLE) THEN
   PRRS(:,:,:) = PRRS(:,:,:) + ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) - ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) - ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
-  IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), 4, 'GMLT_BU_RTH')
-  IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), 8, 'GMLT_BU_RRR')
-  IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), 11,'GMLT_BU_RRG')
+  IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH, 'GMLT_BU_RTH')
+  IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR, 'GMLT_BU_RRR')
+  IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RG,'GMLT_BU_RRG')
 
   IF(KRR==7) THEN
     ZW(:,:,:) = 0.
@@ -1433,12 +1435,12 @@ IF(LBU_ENABLE) THEN
     END DO
     PRGS(:,:,:) = PRGS(:,:,:) - ZW(:,:,:)
     PRHS(:,:,:) = PRHS(:,:,:) + ZW(:,:,:)
-    IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), 4, 'WETH_BU_RTH')
-    IF (LBUDGET_RC) CALL BUDGET(PRCS(:,:,:)*PRHODJ(:,:,:), 7, 'WETH_BU_RRC')
-    IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), 8, 'WETH_BU_RRR')
-    IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), 9, 'WETH_BU_RRI')
-    IF (LBUDGET_RS) CALL BUDGET(PRSS(:,:,:)*PRHODJ(:,:,:), 10,'WETH_BU_RRS')
-    IF (LBUDGET_RH) CALL BUDGET(PRHS(:,:,:)*PRHODJ(:,:,:), 12,'WETH_BU_RRH')
+    IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH, 'WETH_BU_RTH')
+    IF (LBUDGET_RC) CALL BUDGET(PRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC, 'WETH_BU_RRC')
+    IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR, 'WETH_BU_RRR')
+    IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RI, 'WETH_BU_RRI')
+    IF (LBUDGET_RS) CALL BUDGET(PRSS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RS,'WETH_BU_RRS')
+    IF (LBUDGET_RH) CALL BUDGET(PRHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RH,'WETH_BU_RRH')
 
     ZW(:,:,:) = 0.
     DO JL=1,IMICRO
@@ -1446,8 +1448,8 @@ IF(LBU_ENABLE) THEN
     END DO
     PRGS(:,:,:) = PRGS(:,:,:) - ZW(:,:,:)
     PRHS(:,:,:) = PRHS(:,:,:) + ZW(:,:,:)
-    IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), 11,'HGCV_BU_RRG')
-    IF (LBUDGET_RH) CALL BUDGET(PRHS(:,:,:)*PRHODJ(:,:,:), 12,'HGCV_BU_RRH')
+    IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RG,'HGCV_BU_RRG')
+    IF (LBUDGET_RH) CALL BUDGET(PRHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RH,'HGCV_BU_RRH')
 
     ZW(:,:,:) = 0.
     DO JL=1,IMICRO
@@ -1487,13 +1489,13 @@ IF(LBU_ENABLE) THEN
     END DO
     PRHS(:,:,:) = PRHS(:,:,:) - ZW(:,:,:)
     PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
-    IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), 4, 'DRYH_BU_RTH')
-    IF (LBUDGET_RC) CALL BUDGET(PRCS(:,:,:)*PRHODJ(:,:,:), 7, 'DRYH_BU_RRC')
-    IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), 8, 'DRYH_BU_RRR')
-    IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), 9, 'DRYH_BU_RRI')
-    IF (LBUDGET_RS) CALL BUDGET(PRSS(:,:,:)*PRHODJ(:,:,:), 10,'DRYH_BU_RRS')
-    IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), 11,'DRYH_BU_RRG')
-    IF (LBUDGET_RH) CALL BUDGET(PRHS(:,:,:)*PRHODJ(:,:,:), 12,'DRYH_BU_RRH')
+    IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH, 'DRYH_BU_RTH')
+    IF (LBUDGET_RC) CALL BUDGET(PRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC, 'DRYH_BU_RRC')
+    IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR, 'DRYH_BU_RRR')
+    IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RI, 'DRYH_BU_RRI')
+    IF (LBUDGET_RS) CALL BUDGET(PRSS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RS,'DRYH_BU_RRS')
+    IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RG,'DRYH_BU_RRG')
+    IF (LBUDGET_RH) CALL BUDGET(PRHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RH,'DRYH_BU_RRH')
 
     ZW(:,:,:) = 0.
     DO JL=1,IMICRO
@@ -1502,9 +1504,9 @@ IF(LBU_ENABLE) THEN
     PRRS(:,:,:) = PRRS(:,:,:) + ZW(:,:,:)
     PRHS(:,:,:) = PRHS(:,:,:) - ZW(:,:,:)
     PTHS(:,:,:) = PTHS(:,:,:) - ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
-    IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), 4, 'HMLT_BU_RTH')
-    IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), 8, 'HMLT_BU_RRR')
-    IF (LBUDGET_RH) CALL BUDGET(PRHS(:,:,:)*PRHODJ(:,:,:), 12,'HMLT_BU_RRH')
+    IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH, 'HMLT_BU_RTH')
+    IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR, 'HMLT_BU_RRR')
+    IF (LBUDGET_RH) CALL BUDGET(PRHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RH,'HMLT_BU_RRH')
   ENDIF
 
   ZW(:,:,:) = 0.
@@ -1514,9 +1516,9 @@ IF(LBU_ENABLE) THEN
   PRIS(:,:,:) = PRIS(:,:,:) - ZW(:,:,:)
   PRCS(:,:,:) = PRCS(:,:,:) + ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) - ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
-  IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), 4, 'IMLT_BU_RTH')
-  IF (LBUDGET_RC) CALL BUDGET(PRCS(:,:,:)*PRHODJ(:,:,:), 7, 'IMLT_BU_RRC')
-  IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), 9, 'IMLT_BU_RRI')
+  IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH, 'IMLT_BU_RTH')
+  IF (LBUDGET_RC) CALL BUDGET(PRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC, 'IMLT_BU_RRC')
+  IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RI, 'IMLT_BU_RRI')
 
   ZW(:,:,:) = 0.
   DO JL=1,IMICRO
@@ -1525,9 +1527,9 @@ IF(LBU_ENABLE) THEN
   PRCS(:,:,:) = PRCS(:,:,:) - ZW(:,:,:)
   PRIS(:,:,:) = PRIS(:,:,:) + ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
-  IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), 4, 'BERFI_BU_RTH')
-  IF (LBUDGET_RC) CALL BUDGET(PRCS(:,:,:)*PRHODJ(:,:,:), 7, 'BERFI_BU_RRC')
-  IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), 9, 'BERFI_BU_RRI')
+  IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH, 'BERFI_BU_RTH')
+  IF (LBUDGET_RC) CALL BUDGET(PRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC, 'BERFI_BU_RRC')
+  IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RI, 'BERFI_BU_RRI')
 ENDIF
 !
 !***     7.3    Final tendencies
@@ -1543,15 +1545,15 @@ IF (KRR==7) THEN
 ENDIF
 PTHS(:,:,:) = ZW_THS(:,:,:)
 IF(LBU_ENABLE) THEN
-  IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), 4, 'CORR_BU_RTH')
-  IF (LBUDGET_RV) CALL BUDGET(PRVS(:,:,:)*PRHODJ(:,:,:), 6, 'CORR_BU_RRV')
-  IF (LBUDGET_RC) CALL BUDGET(PRCS(:,:,:)*PRHODJ(:,:,:), 7, 'CORR_BU_RRC')
-  IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), 8, 'CORR_BU_RRR')
-  IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), 9, 'CORR_BU_RRI')
-  IF (LBUDGET_RS) CALL BUDGET(PRSS(:,:,:)*PRHODJ(:,:,:), 10,'CORR_BU_RRS')
-  IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), 11,'CORR_BU_RRG')
+  IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_TH, 'CORR_BU_RTH')
+  IF (LBUDGET_RV) CALL BUDGET(PRVS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RV, 'CORR_BU_RRV')
+  IF (LBUDGET_RC) CALL BUDGET(PRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC, 'CORR_BU_RRC')
+  IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR, 'CORR_BU_RRR')
+  IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RI, 'CORR_BU_RRI')
+  IF (LBUDGET_RS) CALL BUDGET(PRSS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RS,'CORR_BU_RRS')
+  IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RG,'CORR_BU_RRG')
   IF (KRR==7) THEN
-    IF (LBUDGET_RH) CALL BUDGET(PRHS(:,:,:)*PRHODJ(:,:,:), 12,'CORR_BU_RRH')
+    IF (LBUDGET_RH) CALL BUDGET(PRHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RH,'CORR_BU_RRH')
   ENDIF
 ENDIF
 !
@@ -1627,13 +1629,13 @@ IF(LSEDIM_AFTER) THEN
   !*       8.2     budget storage
   !
   IF (LBUDGET_RC .AND. OSEDIC) &
-                  CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:), 7 , 'SEDI_BU_RRC')
-  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:), 8 , 'SEDI_BU_RRR')
-  IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:), 9 , 'SEDI_BU_RRI')
-  IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:), 10, 'SEDI_BU_RRS')
-  IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:), 11, 'SEDI_BU_RRG')
+                  CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC, 'SEDI_BU_RRC')
+  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR, 'SEDI_BU_RRR')
+  IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RI, 'SEDI_BU_RRI')
+  IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RS, 'SEDI_BU_RRS')
+  IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RG, 'SEDI_BU_RRG')
   IF ( KRR == 7 .AND. LBUDGET_RH) &
-                  CALL BUDGET (PRHS(:,:,:)*PRHODJ(:,:,:), 12, 'SEDI_BU_RRH')
+                  CALL BUDGET (PRHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RH, 'SEDI_BU_RRH')
   !
   !sedimentation of rain fraction
   CALL ICE4_RAINFR_VERT(IIB, IIE, IIT, IJB, IJE, IJT, IKB, IKE, IKT, KKL, PRAINFR, PRRS(:,:,:)*PTSTEP)
diff --git a/src/MNH/rain_ice_sedimentation_split.f90 b/src/MNH/rain_ice_sedimentation_split.f90
index 3007adf38..349004ee8 100644
--- a/src/MNH/rain_ice_sedimentation_split.f90
+++ b/src/MNH/rain_ice_sedimentation_split.f90
@@ -26,7 +26,8 @@ SUBROUTINE RAIN_ICE_SEDIMENTATION_SPLIT(KIB, KIE, KJB, KJE, KKB, KKE, KKTB, KKTE
 !*      0. DECLARATIONS
 !          ------------
 !
-use MODD_BUDGET,         only: LBUDGET_RC, LBUDGET_RG, LBUDGET_RH, LBUDGET_RI, LBUDGET_RR, LBUDGET_RS
+use MODD_BUDGET,         only: LBUDGET_RC, LBUDGET_RR, LBUDGET_RI, LBUDGET_RS, LBUDGET_RG, LBUDGET_RH, &
+                               NBUDGET_RC, NBUDGET_RR, NBUDGET_RI, NBUDGET_RS, NBUDGET_RG, NBUDGET_RH
 use MODD_CST,            only: XCPD, XP00, XRD, XRHOLW
 use MODD_PARAM_ICE,      only: XVDEPOSC
 use MODD_RAIN_ICE_DESCR, only: XCC, XCONC_LAND, xconc_sea, xconc_urban, XDC, XCEXVT, &
@@ -582,13 +583,13 @@ IF (KRR == 7 .AND. (ILENALLOCH .GT. 0 )) DEALLOCATE(ZRHODREFH,ZRHS,ILISTH)
 !*       2.3     budget storage
 !
 IF (LBUDGET_RC .AND. OSEDIC) &
-                CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7 ,'SEDI_BU_RRC')
-IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8 ,'SEDI_BU_RRR')
-IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9 ,'SEDI_BU_RRI')
-IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),10,'SEDI_BU_RRS')
-IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),11,'SEDI_BU_RRG')
+                CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC, 'SEDI_BU_RRC')
+IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RR, 'SEDI_BU_RRR')
+IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RI, 'SEDI_BU_RRI')
+IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RS, 'SEDI_BU_RRS')
+IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RG, 'SEDI_BU_RRG')
 IF ( KRR == 7 .AND. LBUDGET_RH) &
-                CALL BUDGET (PRHS(:,:,:)*PRHODJ(:,:,:),12,'SEDI_BU_RRH')
+                CALL BUDGET (PRHS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RH, 'SEDI_BU_RRH')
 !
 !
 !
@@ -607,7 +608,7 @@ END IF
 !*       2.5     budget storage
 !
 IF ( LBUDGET_RC .AND. ODEPOSC ) &
-   CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7 ,'DEPO_BU_RRC')
+   CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:), NBUDGET_RC,'DEPO_BU_RRC')
 !
 
   END SUBROUTINE RAIN_ICE_SEDIMENTATION_SPLIT
diff --git a/src/MNH/rain_ice_sedimentation_stat.f90 b/src/MNH/rain_ice_sedimentation_stat.f90
index 3156ab84c..895e23656 100644
--- a/src/MNH/rain_ice_sedimentation_stat.f90
+++ b/src/MNH/rain_ice_sedimentation_stat.f90
@@ -26,7 +26,8 @@ SUBROUTINE RAIN_ICE_SEDIMENTATION_STAT( KIB, KIE, KJB, KJE, KKB, KKE, KKTB, KKTE
 !*      0. DECLARATIONS
 !          ------------
 !
-use MODD_BUDGET,         only: LBUDGET_RC, LBUDGET_RG, LBUDGET_RH, LBUDGET_RI, LBUDGET_RR, LBUDGET_RS
+use MODD_BUDGET,         only: LBUDGET_RC, LBUDGET_RR, LBUDGET_RI, LBUDGET_RS, LBUDGET_RG, LBUDGET_RH, &
+                               NBUDGET_RC, NBUDGET_RR, NBUDGET_RI, NBUDGET_RS, NBUDGET_RG, NBUDGET_RH
 use MODD_CST,            only: XRHOLW
 use MODD_PARAM_ICE,      only: LDEPOSC, XVDEPOSC
 use MODD_RAIN_ICE_PARAM, only: XEXSEDG, XEXSEDH, XEXCSEDI, XEXSEDR, XEXSEDS, &
@@ -548,13 +549,13 @@ PINPRR3D (:,:,:) = 0.
 !*       2.3     budget storage
 !
 IF (LBUDGET_RC .AND. OSEDIC) &
-                CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7 ,'SEDI_BU_RRC')
-IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8 ,'SEDI_BU_RRR')
-IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9 ,'SEDI_BU_RRI')
-IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),10,'SEDI_BU_RRS')
-IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),11,'SEDI_BU_RRG')
+                CALL BUDGET( PRCS(:, :, : ) * PRHODJ(:, :, : ), NBUDGET_RC, 'SEDI_BU_RRC' )
+IF (LBUDGET_RR) CALL BUDGET( PRRS(:, :, : ) * PRHODJ(:, :, : ), NBUDGET_RR, 'SEDI_BU_RRR' )
+IF (LBUDGET_RI) CALL BUDGET( PRIS(:, :, : ) * PRHODJ(:, :, : ), NBUDGET_RI, 'SEDI_BU_RRI' )
+IF (LBUDGET_RS) CALL BUDGET( PRSS(:, :, : ) * PRHODJ(:, :, : ), NBUDGET_RS, 'SEDI_BU_RRS' )
+IF (LBUDGET_RG) CALL BUDGET( PRGS(:, :, : ) * PRHODJ(:, :, : ), NBUDGET_RG, 'SEDI_BU_RRG' )
 IF ( KRR == 7 .AND. LBUDGET_RH) &
-                CALL BUDGET (PRHS(:,:,:)*PRHODJ(:,:,:),12,'SEDI_BU_RRH')
+                CALL BUDGET( PRHS(:, :, : ) * PRHODJ(:, :, : ), NBUDGET_RH, 'SEDI_BU_RRH' )
 !
 !
 !*       2.4  DROPLET DEPOSITION AT THE 1ST LEVEL ABOVE GROUND
@@ -572,7 +573,7 @@ END IF
 !*       2.5     budget storage
 !
 IF ( LBUDGET_RC .AND. LDEPOSC ) &
-   CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7 ,'DEPO_BU_RRC')
+   CALL BUDGET( PRCS(:, :, : ) * PRHODJ(:, :, : ), NBUDGET_RC, 'DEPO_BU_RRC' )
 !
 END SUBROUTINE RAIN_ICE_SEDIMENTATION_STAT
 
diff --git a/src/MNH/rain_ice_slow.f90 b/src/MNH/rain_ice_slow.f90
index eb46ad531..844d83016 100644
--- a/src/MNH/rain_ice_slow.f90
+++ b/src/MNH/rain_ice_slow.f90
@@ -26,7 +26,8 @@ SUBROUTINE RAIN_ICE_SLOW(OMICRO, PINVTSTEP, PRHODREF,                      &
 !*      0. DECLARATIONS
 !          ------------
 !
-use MODD_BUDGET,         only: LBUDGET_RC, LBUDGET_RG, LBUDGET_RI, LBUDGET_RR, LBUDGET_RS, LBUDGET_RV, LBUDGET_TH
+use MODD_BUDGET,         only: LBUDGET_TH, LBUDGET_RV, LBUDGET_RC, LBUDGET_RR, LBUDGET_RI, LBUDGET_RS, LBUDGET_RG, &
+                               NBUDGET_TH, NBUDGET_RV, NBUDGET_RC, NBUDGET_RR, NBUDGET_RI, NBUDGET_RS, NBUDGET_RG
 use MODD_CST,            only: XALPI, XBETAI, XCI, XCPV, XGAMI, XLSTT, XMNH_HUGE_12_LOG, XP00, XRV, XTT
 use MODD_RAIN_ICE_DESCR, only: XCEXVT, XLBDAS_MAX, XLBEXG, XLBEXS, XLBG, XLBS, XRTMIN
 use MODD_RAIN_ICE_PARAM, only: X0DEPG, X0DEPS, X1DEPG, X1DEPS, XACRIAUTI, XALPHA3, XBCRIAUTI, XBETA3, XCOLEXIS, XCRIAUTI, &
@@ -91,13 +92,13 @@ REAL, DIMENSION(size(PRHODREF)) :: ZCRIAUTI ! Snow-to-ice autoconversion thres.
 !
   IF (LBUDGET_TH) CALL BUDGET (                                                &
                  UNPACK(PTHS(:),MASK=OMICRO(:,:,:),FIELD=PTHS3D)*PRHODJ3D(:,:,:),  &
-                                                              4,'HON_BU_RTH')
+                                                        NBUDGET_TH,'HON_BU_RTH')
   IF (LBUDGET_RC) CALL BUDGET (                                                &
                      UNPACK(PRCS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),   &
-                                                              7,'HON_BU_RRC')
+                                                        NBUDGET_RC,'HON_BU_RRC')
   IF (LBUDGET_RI) CALL BUDGET (                                                &
                      UNPACK(PRIS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),   &
-                                                              9,'HON_BU_RRI')
+                                                        NBUDGET_RI,'HON_BU_RRI')
 !
 !*       3.3     compute the spontaneous freezing source: RRHONG
 !
@@ -111,13 +112,13 @@ REAL, DIMENSION(size(PRHODREF)) :: ZCRIAUTI ! Snow-to-ice autoconversion thres.
 !
   IF (LBUDGET_TH) CALL BUDGET (                                                &
                  UNPACK(PTHS(:),MASK=OMICRO(:,:,:),FIELD=PTHS3D)*PRHODJ3D(:,:,:),  &
-                                                              4,'SFR_BU_RTH')
+                                                        NBUDGET_TH,'SFR_BU_RTH')
   IF (LBUDGET_RR) CALL BUDGET (                                                &
                      UNPACK(PRRS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),   &
-                                                              8,'SFR_BU_RRR')
+                                                        NBUDGET_RR,'SFR_BU_RRR')
   IF (LBUDGET_RG) CALL BUDGET (                                                &
                      UNPACK(PRGS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),   &
-                                                             11,'SFR_BU_RRG')
+                                                        NBUDGET_RG,'SFR_BU_RRG')
 !
 !*       3.4    compute the deposition, aggregation and autoconversion sources
 !
@@ -162,13 +163,13 @@ REAL, DIMENSION(size(PRHODREF)) :: ZCRIAUTI ! Snow-to-ice autoconversion thres.
   END WHERE
   IF (LBUDGET_TH) CALL BUDGET (                                                &
                  UNPACK(PTHS(:),MASK=OMICRO(:,:,:),FIELD=PTHS3D)*PRHODJ3D(:,:,:),  &
-                                                              4,'DEPS_BU_RTH')
+                                                      NBUDGET_TH,'DEPS_BU_RTH')
   IF (LBUDGET_RV) CALL BUDGET (                                                &
                  UNPACK(PRVS(:),MASK=OMICRO(:,:,:),FIELD=PRVS3D)*PRHODJ3D(:,:,:),  &
-                                                              6,'DEPS_BU_RRV')
+                                                      NBUDGET_RV,'DEPS_BU_RRV')
   IF (LBUDGET_RS) CALL BUDGET (                                                &
                      UNPACK(PRSS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),   &
-                                                             10,'DEPS_BU_RRS')
+                                                      NBUDGET_RS,'DEPS_BU_RRS')
 !
 !*       3.4.4  compute the aggregation on r_s: RIAGGS
 !
@@ -183,10 +184,10 @@ REAL, DIMENSION(size(PRHODREF)) :: ZCRIAUTI ! Snow-to-ice autoconversion thres.
   END WHERE
   IF (LBUDGET_RI) CALL BUDGET (                                                 &
                      UNPACK(PRIS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                              9,'AGGS_BU_RRI')
+                                                        NBUDGET_RI,'AGGS_BU_RRI')
   IF (LBUDGET_RS) CALL BUDGET (                                                 &
                      UNPACK(PRSS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                             10,'AGGS_BU_RRS')
+                                                        NBUDGET_RS,'AGGS_BU_RRS')
 !
 !*       3.4.5  compute the autoconversion of r_i for r_s production: RIAUTS
 !
@@ -201,10 +202,10 @@ REAL, DIMENSION(size(PRHODREF)) :: ZCRIAUTI ! Snow-to-ice autoconversion thres.
   END WHERE
   IF (LBUDGET_RI) CALL BUDGET (                                                 &
                      UNPACK(PRIS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                              9,'AUTS_BU_RRI')
+                                                        NBUDGET_RI,'AUTS_BU_RRI')
   IF (LBUDGET_RS) CALL BUDGET (                                                 &
                      UNPACK(PRSS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                             10,'AUTS_BU_RRS')
+                                                        NBUDGET_RS,'AUTS_BU_RRS')
 !
 !*       3.4.6  compute the deposition on r_g: RVDEPG
 !
@@ -224,13 +225,13 @@ REAL, DIMENSION(size(PRHODREF)) :: ZCRIAUTI ! Snow-to-ice autoconversion thres.
   END WHERE
   IF (LBUDGET_TH) CALL BUDGET (                                                 &
                  UNPACK(PTHS(:),MASK=OMICRO(:,:,:),FIELD=PTHS3D)*PRHODJ3D(:,:,:),   &
-                                                              4,'DEPG_BU_RTH')
+                                                        NBUDGET_TH,'DEPG_BU_RTH')
   IF (LBUDGET_RV) CALL BUDGET (                                                 &
                  UNPACK(PRVS(:),MASK=OMICRO(:,:,:),FIELD=PRVS3D)*PRHODJ3D(:,:,:),   &
-                                                              6,'DEPG_BU_RRV')
+                                                        NBUDGET_RV,'DEPG_BU_RRV')
   IF (LBUDGET_RG) CALL BUDGET (                                                 &
                      UNPACK(PRGS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                             11,'DEPG_BU_RRG')
+                                                        NBUDGET_RG,'DEPG_BU_RRG')
 !
 END SUBROUTINE RAIN_ICE_SLOW
 
diff --git a/src/MNH/rain_ice_warm.f90 b/src/MNH/rain_ice_warm.f90
index 54a8c315c..15f61b570 100644
--- a/src/MNH/rain_ice_warm.f90
+++ b/src/MNH/rain_ice_warm.f90
@@ -25,7 +25,8 @@ SUBROUTINE RAIN_ICE_WARM(OMICRO, KMICRO, K1, K2, K3,
 !*      0. DECLARATIONS
 !          ------------
 !
-use MODD_BUDGET,         only: LBUDGET_RC, LBUDGET_RR, LBUDGET_RV, LBUDGET_TH
+use MODD_BUDGET,         only: LBUDGET_TH, LBUDGET_RV, LBUDGET_RC, LBUDGET_RR, &
+                               NBUDGET_TH, NBUDGET_RV, NBUDGET_RC, NBUDGET_RR
 use MODD_CST,            only: XALPW, XBETAW, XCL, XCPV, XGAMW, XLVTT, XMD, XMV, XRV, XTT
 use MODD_PARAM_ICE,      only: CSUBG_RC_RR_ACCR, CSUBG_RR_EVAP
 use MODD_RAIN_ICE_DESCR, only: XCEXVT, XRTMIN
@@ -99,10 +100,10 @@ REAL, DIMENSION(size(PRHODREF)) :: ZZW4 ! Work array
 !
       IF (LBUDGET_RC) CALL BUDGET (                                               &
                        UNPACK(PRCS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                                7,'AUTO_BU_RRC')
+                                                          NBUDGET_RC,'AUTO_BU_RRC')
       IF (LBUDGET_RR) CALL BUDGET (                                               &
                        UNPACK(PRRS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                                8,'AUTO_BU_RRR')
+                                                          NBUDGET_RR,'AUTO_BU_RRR')
 !
 !*       4.3    compute the accretion of r_c for r_r production: RCACCR
 !
@@ -153,10 +154,10 @@ REAL, DIMENSION(size(PRHODREF)) :: ZZW4 ! Work array
 
     IF (LBUDGET_RC) CALL BUDGET (                                               &
                      UNPACK(PRCS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                              7,'ACCR_BU_RRC')
+                                                        NBUDGET_RC,'ACCR_BU_RRC')
     IF (LBUDGET_RR) CALL BUDGET (                                               &
                      UNPACK(PRRS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                              8,'ACCR_BU_RRR')
+                                                        NBUDGET_RR,'ACCR_BU_RRR')
 !
 !*       4.4    compute the evaporation of r_r: RREVAV
 !
@@ -230,13 +231,13 @@ REAL, DIMENSION(size(PRHODREF)) :: ZZW4 ! Work array
 
     IF (LBUDGET_TH) CALL BUDGET (                                               &
                  UNPACK(PTHS(:),MASK=OMICRO(:,:,:),FIELD=PTHS3D)*PRHODJ3D(:,:,:),   &
-                                                              4,'REVA_BU_RTH')
+                                                        NBUDGET_TH,'REVA_BU_RTH')
     IF (LBUDGET_RV) CALL BUDGET (                                               &
                  UNPACK(PRVS(:),MASK=OMICRO(:,:,:),FIELD=PRVS3D)*PRHODJ3D(:,:,:),   &
-                                                              6,'REVA_BU_RRV')
+                                                        NBUDGET_RV,'REVA_BU_RRV')
     IF (LBUDGET_RR) CALL BUDGET (                                               &
                      UNPACK(PRRS(:)*PRHODJ(:),MASK=OMICRO(:,:,:),FIELD=0.0),    &
-                                                              8,'REVA_BU_RRR')
+                                                        NBUDGET_RR,'REVA_BU_RRR')
 
     DO JL = 1, KMICRO
       PEVAP3D(K1(JL), K2(JL), K3(JL)) = ZZW( JL )
diff --git a/src/MNH/rel_forcingn.f90 b/src/MNH/rel_forcingn.f90
index e057e1223..e9c05ea10 100644
--- a/src/MNH/rel_forcingn.f90
+++ b/src/MNH/rel_forcingn.f90
@@ -249,8 +249,8 @@ END IF
 !
 !*       3.     BUDGET CALLS
 !   	        ------------
-IF (LBUDGET_TH)  CALL BUDGET (PRTHS,4,'2DREL_BU_RTH')
-IF (LBUDGET_RV)  CALL BUDGET (PRRS(:,:,:,1),6,'2DREL_BU_RRV')
+IF (LBUDGET_TH)  CALL BUDGET (PRTHS,NBUDGET_TH,'2DREL_BU_RTH')
+IF (LBUDGET_RV)  CALL BUDGET (PRRS(:,:,:,1),NBUDGET_RV,'2DREL_BU_RRV')
 !----------------------------------------------------------------------------
 !
 END SUBROUTINE REL_FORCING_n
diff --git a/src/MNH/relax2fw_ion.f90 b/src/MNH/relax2fw_ion.f90
index 001f00385..cae86dedf 100644
--- a/src/MNH/relax2fw_ion.f90
+++ b/src/MNH/relax2fw_ion.f90
@@ -1,7 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2010-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 !     ########################
       MODULE MODI_RELAX2FW_ION
 !     ########################
@@ -102,16 +103,16 @@ END MODULE MODI_RELAX2FW_ION
 !*       0.    DECLARATIONS
 !              ------------
 !
+use modd_budget,     only: lbudget_sv, NBUDGET_SV1
+USE MODD_CONF
+USE MODD_ELEC_n,     ONLY: XCION_POS_FW, XCION_NEG_FW
+USE MODD_NSV,        ONLY: NSV_ELECBEG, NSV_ELECEND
 USE MODD_PARAMETERS
-USE MODD_CONF 
-USE MODD_BUDGET 
-USE MODD_NSV, ONLY: NSV_ELECBEG, NSV_ELECEND
-USE MODD_ELEC_n, ONLY: XCION_POS_FW, XCION_NEG_FW
 !
 USE MODE_ll
 !
-USE MODI_SHUMAN     
-USE MODI_BUDGET     
+USE MODI_BUDGET
+USE MODI_SHUMAN
 !
 IMPLICIT NONE
 !
@@ -212,10 +213,8 @@ END IF
 !	        ------------------------------
 !
 IF (LBUDGET_SV) THEN
-  JSV = NSV_ELECBEG
-  CALL BUDGET (PRSVS(:,:,:,JSV),JSV+12,'REL_BU_RSV')
-  JSV = NSV_ELECEND
-  CALL BUDGET (PRSVS(:,:,:,JSV),JSV+12,'REL_BU_RSV')
+  CALL BUDGET( PRSVS(:, :, :, NSV_ELECBEG ), NBUDGET_SV1 - 1 + NSV_ELECBEG, 'REL_BU_RSV' )
+  CALL BUDGET( PRSVS(:, :, :, NSV_ELECEND ), NBUDGET_SV1 - 1 + NSV_ELECEND, 'REL_BU_RSV' )
 END IF
 !
 !
diff --git a/src/MNH/relaxation.f90 b/src/MNH/relaxation.f90
index 13e62a4ab..df1c4133a 100644
--- a/src/MNH/relaxation.f90
+++ b/src/MNH/relaxation.f90
@@ -1,7 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 !     ######################
       MODULE MODI_RELAXATION 
 !     ######################
@@ -706,21 +707,21 @@ END DO
 !	        ------------------------------
 !
 CALL EXTRAPOL('W ', PRUS)
-IF (LBUDGET_U) CALL BUDGET  (PRUS,1,'REL_BU_RU')
-IF (LBUDGET_V) CALL BUDGET  (PRVS,2,'REL_BU_RV')
-IF (LBUDGET_W) CALL BUDGET  (PRWS,3,'REL_BU_RW')
-IF (LBUDGET_TH) CALL BUDGET (PRTHS,4,'REL_BU_RTH')
-IF (LBUDGET_TKE) CALL BUDGET (PRTKES,5,'REL_BU_RTKE')
-IF (LBUDGET_RV)  CALL BUDGET (PRRS(:,:,:,1),6,'REL_BU_RRV')
-IF (LBUDGET_RC)  CALL BUDGET (PRRS(:,:,:,2),7,'REL_BU_RRC')
-IF (LBUDGET_RR)  CALL BUDGET (PRRS(:,:,:,3),8,'REL_BU_RRR')
-IF (LBUDGET_RI)  CALL BUDGET (PRRS(:,:,:,4),9,'REL_BU_RRI')
-IF (LBUDGET_RS)  CALL BUDGET (PRRS(:,:,:,5),10,'REL_BU_RRS')
-IF (LBUDGET_RG)  CALL BUDGET (PRRS(:,:,:,6),11,'REL_BU_RRG')
-IF (LBUDGET_RH)  CALL BUDGET (PRRS(:,:,:,7),12,'REL_BU_RRH')
-IF (LBUDGET_SV) THEN
+IF ( LBUDGET_U   ) CALL BUDGET( PRUS,                 NBUDGET_U,             'REL_BU_RU')
+IF ( LBUDGET_V   ) CALL BUDGET( PRVS,                 NBUDGET_V,             'REL_BU_RV')
+IF ( LBUDGET_W   ) CALL BUDGET( PRWS,                 NBUDGET_W,             'REL_BU_RW')
+IF ( LBUDGET_TH  ) CALL BUDGET( PRTHS,                NBUDGET_TH,            'REL_BU_RTH')
+IF ( LBUDGET_TKE ) CALL BUDGET( PRTKES,               NBUDGET_TKE,           'REL_BU_RTKE')
+IF ( LBUDGET_RV  ) CALL BUDGET( PRRS(:, :, :, 1 ),    NBUDGET_RV,            'REL_BU_RRV')
+IF ( LBUDGET_RC  ) CALL BUDGET( PRRS(:, :, :, 2 ),    NBUDGET_RC,            'REL_BU_RRC')
+IF ( LBUDGET_RR  ) CALL BUDGET( PRRS(:, :, :, 3 ),    NBUDGET_RR,            'REL_BU_RRR')
+IF ( LBUDGET_RI  ) CALL BUDGET( PRRS(:, :, :, 4 ),    NBUDGET_RI,            'REL_BU_RRI')
+IF ( LBUDGET_RS  ) CALL BUDGET( PRRS(:, :, :, 5 ),    NBUDGET_RS,            'REL_BU_RRS')
+IF ( LBUDGET_RG  ) CALL BUDGET( PRRS(:, :, :, 6 ),    NBUDGET_RG,            'REL_BU_RRG')
+IF ( LBUDGET_RH  ) CALL BUDGET( PRRS(:, :, :, 7 ),    NBUDGET_RH,            'REL_BU_RRH')
+IF ( LBUDGET_SV  ) THEN
   DO JSV=1,KSV 
-    CALL BUDGET (PRSVS(:,:,:,JSV),JSV+12,'REL_BU_RSV')
+                   CALL BUDGET( PRSVS(:, :, :, JSV ), NBUDGET_SV1 - 1 + JSV, 'REL_BU_RSV' )
   END DO
 END IF
 !
diff --git a/src/MNH/resolved_cloud.f90 b/src/MNH/resolved_cloud.f90
index 6116fa3f9..f0257f5f0 100644
--- a/src/MNH/resolved_cloud.f90
+++ b/src/MNH/resolved_cloud.f90
@@ -271,8 +271,10 @@ END MODULE MODI_RESOLVED_CLOUD
 !
 !*       0.    DECLARATIONS
 !              ------------
-USE MODD_BUDGET,         ONLY: LBUDGET_TH, LBUDGET_RC, LBUDGET_RG, LBUDGET_RH, LBUDGET_RI, LBUDGET_RR, LBUDGET_RS, LBUDGET_RV, &
-                               LBUDGET_SV
+USE MODD_BUDGET,         ONLY: LBUDGET_TH, LBUDGET_RV, LBUDGET_RC, LBUDGET_RR, LBUDGET_RI, LBUDGET_RS, LBUDGET_RG, LBUDGET_RH, &
+                               LBUDGET_SV,                                                                                     &
+                               NBUDGET_TH, NBUDGET_RV, NBUDGET_RC, NBUDGET_RR, NBUDGET_RI, NBUDGET_RS, NBUDGET_RG, NBUDGET_RH, &
+                               NBUDGET_SV1
 USE MODD_CH_AEROSOL,     ONLY: LORILAM
 USE MODD_DUST,           ONLY: LDUST
 USE MODD_CST,            ONLY: XCI, XCL, XCPD, XCPV, XLSTT, XLVTT, XMNH_TINY, XP00, XRD, XRHOLW, XTT
@@ -764,29 +766,29 @@ END SELECT
 !            ----------------------
 !
 IF ((HCLOUD /= 'KHKO') .AND. (HCLOUD /= 'C2R2') ) THEN
- IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)  * PRHODJ(:,:,:), 4,'NEGA_BU_RTH')
- IF (LBUDGET_RV) CALL BUDGET (PRS(:,:,:,1) * PRHODJ(:,:,:), 6,'NEGA_BU_RRV')
- IF (LBUDGET_RC) CALL BUDGET (PRS(:,:,:,2) * PRHODJ(:,:,:), 7,'NEGA_BU_RRC')
+ IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)  * PRHODJ(:,:,:), NBUDGET_TH,'NEGA_BU_RTH')
+ IF (LBUDGET_RV) CALL BUDGET (PRS(:,:,:,1) * PRHODJ(:,:,:), NBUDGET_RV,'NEGA_BU_RRV')
+ IF (LBUDGET_RC) CALL BUDGET (PRS(:,:,:,2) * PRHODJ(:,:,:), NBUDGET_RC,'NEGA_BU_RRC')
 END IF
-IF (LBUDGET_RR) CALL BUDGET (PRS(:,:,:,3) * PRHODJ(:,:,:), 8,'NEGA_BU_RRR')
-IF (LBUDGET_RI) CALL BUDGET (PRS(:,:,:,4) * PRHODJ(:,:,:) ,9,'NEGA_BU_RRI')
-IF (LBUDGET_RS) CALL BUDGET (PRS(:,:,:,5) * PRHODJ(:,:,:),10,'NEGA_BU_RRS')
-IF (LBUDGET_RG) CALL BUDGET (PRS(:,:,:,6) * PRHODJ(:,:,:),11,'NEGA_BU_RRG')
-IF (LBUDGET_RH) CALL BUDGET (PRS(:,:,:,7) * PRHODJ(:,:,:),12,'NEGA_BU_RRH')
+IF (LBUDGET_RR) CALL BUDGET (PRS(:,:,:,3) * PRHODJ(:,:,:), NBUDGET_RR,'NEGA_BU_RRR')
+IF (LBUDGET_RI) CALL BUDGET (PRS(:,:,:,4) * PRHODJ(:,:,:), NBUDGET_RI,'NEGA_BU_RRI')
+IF (LBUDGET_RS) CALL BUDGET (PRS(:,:,:,5) * PRHODJ(:,:,:), NBUDGET_RS,'NEGA_BU_RRS')
+IF (LBUDGET_RG) CALL BUDGET (PRS(:,:,:,6) * PRHODJ(:,:,:), NBUDGET_RG,'NEGA_BU_RRG')
+IF (LBUDGET_RH) CALL BUDGET (PRS(:,:,:,7) * PRHODJ(:,:,:), NBUDGET_RH,'NEGA_BU_RRH')
 IF (LBUDGET_SV .AND. (HCLOUD == 'LIMA')) THEN
-   IF (OWARM) CALL BUDGET (ZSVS(:,:,:,NSV_LIMA_NC) * PRHODJ(:,:,:),12+NSV_LIMA_NC,'NEGA_BU_RSV')
-   IF (OWARM.AND.ORAIN) CALL BUDGET (ZSVS(:,:,:,NSV_LIMA_NR) * PRHODJ(:,:,:),12+NSV_LIMA_NR,'NEGA_BU_RSV')
-   IF (LCOLD) CALL BUDGET (ZSVS(:,:,:,NSV_LIMA_NI) * PRHODJ(:,:,:),12+NSV_LIMA_NI,'NEGA_BU_RSV')
+   IF (OWARM) CALL BUDGET (ZSVS(:,:,:,NSV_LIMA_NC) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_LIMA_NC,'NEGA_BU_RSV')
+   IF (OWARM.AND.ORAIN) CALL BUDGET (ZSVS(:,:,:,NSV_LIMA_NR) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_LIMA_NR,'NEGA_BU_RSV')
+   IF (LCOLD) CALL BUDGET (ZSVS(:,:,:,NSV_LIMA_NI) * PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_LIMA_NI,'NEGA_BU_RSV')
    IF (NMOD_CCN.GE.1) THEN
       DO JL=1, NMOD_CCN
          CALL BUDGET ( ZSVS(:,:,:,NSV_LIMA_CCN_FREE+JL-1)* &
-              PRHODJ(:,:,:),12+NSV_LIMA_CCN_FREE+JL-1,'NEGA_BU_RSV') 
+              PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_LIMA_CCN_FREE+JL-1,'NEGA_BU_RSV')
       END DO
    END IF
    IF (NMOD_IFN.GE.1) THEN
       DO JL=1, NMOD_IFN
          CALL BUDGET ( ZSVS(:,:,:,NSV_LIMA_IFN_FREE+JL-1)* &
-              PRHODJ(:,:,:),12+NSV_LIMA_IFN_FREE+JL-1,'NEGA_BU_RSV') 
+              PRHODJ(:,:,:),NBUDGET_SV1-1+NSV_LIMA_IFN_FREE+JL-1,'NEGA_BU_RSV')
       END DO
    END IF
 END IF
@@ -1153,9 +1155,9 @@ IF ( (HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2') ) THEN
         ZSVS(:,:,:,JSV) = 0.0
       END WHERE
     ENDDO
- IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)  * PRHODJ(:,:,:), 4,'NECON_BU_RTH')
- IF (LBUDGET_RV) CALL BUDGET (PRS(:,:,:,1) * PRHODJ(:,:,:), 6,'NECON_BU_RRV')
- IF (LBUDGET_RC) CALL BUDGET (PRS(:,:,:,2) * PRHODJ(:,:,:), 7,'NECON_BU_RRC')
+ IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)  * PRHODJ(:,:,:), NBUDGET_TH,'NECON_BU_RTH')
+ IF (LBUDGET_RV) CALL BUDGET (PRS(:,:,:,1) * PRHODJ(:,:,:), NBUDGET_RV,'NECON_BU_RRV')
+ IF (LBUDGET_RC) CALL BUDGET (PRS(:,:,:,2) * PRHODJ(:,:,:), NBUDGET_RC,'NECON_BU_RRC')
 END IF
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/resolved_elecn.f90 b/src/MNH/resolved_elecn.f90
index 71ceb8c62..535a78327 100644
--- a/src/MNH/resolved_elecn.f90
+++ b/src/MNH/resolved_elecn.f90
@@ -612,18 +612,18 @@ END DO
 !
 !*       3.4     store the budget terms
 !
-IF (LBUDGET_RV) CALL BUDGET (PRS(:,:,:,1) * PRHODJ(:,:,:), 6,'NEGA_BU_RRV')
-IF (LBUDGET_RC) CALL BUDGET (PRS(:,:,:,2) * PRHODJ(:,:,:), 7,'NEGA_BU_RRC')
-IF (LBUDGET_RR) CALL BUDGET (PRS(:,:,:,3) * PRHODJ(:,:,:), 8,'NEGA_BU_RRR')
-IF (LBUDGET_RI) CALL BUDGET (PRS(:,:,:,4) * PRHODJ(:,:,:) ,9,'NEGA_BU_RRI')
-IF (LBUDGET_RS) CALL BUDGET (PRS(:,:,:,5) * PRHODJ(:,:,:),10,'NEGA_BU_RRS')
-IF (LBUDGET_RG) CALL BUDGET (PRS(:,:,:,6) * PRHODJ(:,:,:),11,'NEGA_BU_RRG')
-IF (LBUDGET_RH) CALL BUDGET (PRS(:,:,:,7) * PRHODJ(:,:,:),12,'NEGA_BU_RRH')
-IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)  * PRHODJ(:,:,:), 4,'NEGA_BU_RTH')
+IF (LBUDGET_RV) CALL BUDGET (PRS(:,:,:,1) * PRHODJ(:,:,:), NBUDGET_RV, 'NEGA_BU_RRV')
+IF (LBUDGET_RC) CALL BUDGET (PRS(:,:,:,2) * PRHODJ(:,:,:), NBUDGET_RC, 'NEGA_BU_RRC')
+IF (LBUDGET_RR) CALL BUDGET (PRS(:,:,:,3) * PRHODJ(:,:,:), NBUDGET_RR, 'NEGA_BU_RRR')
+IF (LBUDGET_RI) CALL BUDGET (PRS(:,:,:,4) * PRHODJ(:,:,:) ,NBUDGET_RI, 'NEGA_BU_RRI')
+IF (LBUDGET_RS) CALL BUDGET (PRS(:,:,:,5) * PRHODJ(:,:,:), NBUDGET_RS, 'NEGA_BU_RRS')
+IF (LBUDGET_RG) CALL BUDGET (PRS(:,:,:,6) * PRHODJ(:,:,:), NBUDGET_RG, 'NEGA_BU_RRG')
+IF (LBUDGET_RH) CALL BUDGET (PRS(:,:,:,7) * PRHODJ(:,:,:), NBUDGET_RH, 'NEGA_BU_RRH')
+IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)  * PRHODJ(:,:,:), NBUDGET_TH, 'NEGA_BU_RTH')
 !
 IF (LBUDGET_SV) THEN
   DO JSV = NSV_ELECBEG, NSV_ELECEND
-    CALL BUDGET (PSVS(:,:,:,JSV) * PRHODJ(:,:,:), 12+JSV, 'NEGA_BU_RSV')
+    CALL BUDGET (PSVS(:,:,:,JSV) * PRHODJ(:,:,:), NBUDGET_SV1-1+JSV, 'NEGA_BU_RSV')
   END DO
 END IF
 !
diff --git a/src/MNH/shallow_mf_pack.f90 b/src/MNH/shallow_mf_pack.f90
index 5e76f58c5..b8f8aca93 100644
--- a/src/MNH/shallow_mf_pack.f90
+++ b/src/MNH/shallow_mf_pack.f90
@@ -372,12 +372,12 @@ END DO
 
 !!! 7. call to MesoNH budgets
 
-IF (LBUDGET_TH) CALL BUDGET (PRTHS,4,'MAFL_BU_RTH')
-IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),6,'MAFL_BU_RRV')
-IF (LBUDGET_U) CALL BUDGET (PRUS,1,'MAFL_BU_RU')
-IF (LBUDGET_V) CALL BUDGET (PRVS,2,'MAFL_BU_RV')
+IF (LBUDGET_TH) CALL BUDGET (PRTHS,NBUDGET_TH,'MAFL_BU_RTH')
+IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),NBUDGET_RV,'MAFL_BU_RRV')
+IF (LBUDGET_U) CALL BUDGET (PRUS,NBUDGET_U,'MAFL_BU_RU')
+IF (LBUDGET_V) CALL BUDGET (PRVS,NBUDGET_V,'MAFL_BU_RV')
 DO JSV=1,ISV 
- IF (LBUDGET_SV) CALL BUDGET (PRSVS(:,:,:,JSV),12+JSV,'MAFL_BU_RSV')
+ IF (LBUDGET_SV) CALL BUDGET (PRSVS(:,:,:,JSV),NBUDGET_SV1-1+JSV,'MAFL_BU_RSV')
 END DO                 
   
 !!! 8. Prints the fluxes in output file
diff --git a/src/MNH/slow_terms.f90 b/src/MNH/slow_terms.f90
index 3699b5af8..62ffffc26 100644
--- a/src/MNH/slow_terms.f90
+++ b/src/MNH/slow_terms.f90
@@ -324,7 +324,7 @@ PRRS(:,:,:) = ZW1(:,:,:) / PTSTEP
 ! 
 !*       2.5     budget storage
 !
-IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8,'SEDI_BU_RRR')
+IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RR,'SEDI_BU_RRR')
 !
 !-------------------------------------------------------------------------------
 !
@@ -348,8 +348,8 @@ END WHERE
 !
 !*       3.2     budget storage
 !
-IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7,'ACCR_BU_RRC')
-IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8,'ACCR_BU_RRR')
+IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RC,'ACCR_BU_RRC')
+IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RR,'ACCR_BU_RRR')
 !
 !-------------------------------------------------------------------------------
 !
@@ -379,8 +379,8 @@ END IF
 !
 !*       4.2     budget storage
 !
-IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7,'AUTO_BU_RRC')
-IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8,'AUTO_BU_RRR')
+IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RC,'AUTO_BU_RRC')
+IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RR,'AUTO_BU_RRR')
 !
 !-------------------------------------------------------------------------------
 !
@@ -436,9 +436,9 @@ END WHERE
 !
 !*       5.8     budget storage
 !
-IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),6,'REVA_BU_RRV')
-IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8,'REVA_BU_RRR')
-IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'REVA_BU_RTH')
+IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RV,'REVA_BU_RRV')
+IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),NBUDGET_RR,'REVA_BU_RRR')
+IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),NBUDGET_TH,'REVA_BU_RTH')
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/tke_eps_sources.f90 b/src/MNH/tke_eps_sources.f90
index ebb68aa19..bb417e018 100644
--- a/src/MNH/tke_eps_sources.f90
+++ b/src/MNH/tke_eps_sources.f90
@@ -375,18 +375,18 @@ IF (LBUDGET_TKE) THEN
 ! add the dynamical production
 !
   PRTKES(:,:,:) = PRTKES(:,:,:) + PDP(:,:,:) * PRHODJ(:,:,:)
-  CALL BUDGET (PRTKES(:,:,:),5,'DP_BU_RTKE')
+  CALL BUDGET (PRTKES(:,:,:),NBUDGET_TKE,'DP_BU_RTKE')
 !
 ! add the thermal production
 !
   PRTKES(:,:,:) = PRTKES(:,:,:) + PTP(:,:,:) * PRHODJ(:,:,:)
-  CALL BUDGET (PRTKES(:,:,:),5,'TP_BU_RTKE')
+  CALL BUDGET (PRTKES(:,:,:),NBUDGET_TKE,'TP_BU_RTKE')
 !
 ! add the dissipation
 !
 PRTKES(:,:,:) = PRTKES(:,:,:) - XCED * SQRT(PTKEM(:,:,:)) / PLEPS(:,:,:) * &
                 (PEXPL*PTKEM(:,:,:) + PIMPL*ZRES(:,:,:)) * PRHODJ(:,:,:)
-CALL BUDGET (PRTKES(:,:,:),5,'DISS_BU_RTKE')
+CALL BUDGET (PRTKES(:,:,:),NBUDGET_TKE,'DISS_BU_RTKE')
 END IF 
 !
 !*       2.5  computes the final RTKE and stores the whole turbulent transport
@@ -395,7 +395,7 @@ PRTKES(:,:,:) = ZRES(:,:,:) * PRHODJ(:,:,:) / PTSTEP -  PRTKESM(:,:,:)
 !
 ! stores the whole turbulent transport
 !
-IF (LBUDGET_TKE) CALL BUDGET (PRTKES(:,:,:),5,'TR_BU_RTKE')
+IF (LBUDGET_TKE) CALL BUDGET (PRTKES(:,:,:),NBUDGET_TKE,'TR_BU_RTKE')
 !
 !
 !----------------------------------------------------------------------------
diff --git a/src/MNH/turb.f90 b/src/MNH/turb.f90
index f875c2e36..96dbe560b 100644
--- a/src/MNH/turb.f90
+++ b/src/MNH/turb.f90
@@ -1,4 +1,4 @@
-  !MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -923,34 +923,34 @@ CALL TURB_VER(KKA,KKU,KKL,KRR, KRRL, KRRI,               &
           PDYP,PTHP,PSIGS,PWTH,PWRC,PWSV                 )
 !
 
-IF (LBUDGET_U) CALL BUDGET (PRUS,1,'VTURB_BU_RU')
-IF (LBUDGET_V) CALL BUDGET (PRVS,2,'VTURB_BU_RV')
-IF (LBUDGET_W) CALL BUDGET (PRWS,3,'VTURB_BU_RW')
+IF (LBUDGET_U) CALL BUDGET (PRUS,NBUDGET_U,'VTURB_BU_RU')
+IF (LBUDGET_V) CALL BUDGET (PRVS,NBUDGET_V,'VTURB_BU_RV')
+IF (LBUDGET_W) CALL BUDGET (PRWS,NBUDGET_W,'VTURB_BU_RW')
 IF (LBUDGET_TH)  THEN
   IF ( KRRI >= 1 .AND. KRRL >= 1 ) THEN
-    CALL BUDGET (PRTHLS+ ZLVOCPEXNM * PRRS(:,:,:,2) + ZLSOCPEXNM * PRRS(:,:,:,4),4,'VTURB_BU_RTH')
+    CALL BUDGET (PRTHLS+ ZLVOCPEXNM * PRRS(:,:,:,2) + ZLSOCPEXNM * PRRS(:,:,:,4),NBUDGET_TH,'VTURB_BU_RTH')
   ELSE IF ( KRRL >= 1 ) THEN
-    CALL BUDGET (PRTHLS+ ZLOCPEXNM * PRRS(:,:,:,2),4,'VTURB_BU_RTH')
+    CALL BUDGET (PRTHLS+ ZLOCPEXNM * PRRS(:,:,:,2),NBUDGET_TH,'VTURB_BU_RTH')
   ELSE
-    CALL BUDGET (PRTHLS,4,'VTURB_BU_RTH')
+    CALL BUDGET (PRTHLS,NBUDGET_TH,'VTURB_BU_RTH')
   END IF
 END IF
 IF (LBUDGET_SV) THEN
   DO JSV = 1,NSV
-    CALL BUDGET (PRSVS(:,:,:,JSV),JSV+12,'VTURB_BU_RSV')
+    CALL BUDGET (PRSVS(:,:,:,JSV),NBUDGET_SV1-1+JSV,'VTURB_BU_RSV')
   END DO
 END IF
 IF (LBUDGET_RV) THEN
   IF ( KRRI >= 1 .AND. KRRL >= 1) THEN
-    CALL BUDGET (PRRS(:,:,:,1)-PRRS(:,:,:,2)-PRRS(:,:,:,4),6,'VTURB_BU_RRV')
+    CALL BUDGET (PRRS(:,:,:,1)-PRRS(:,:,:,2)-PRRS(:,:,:,4),NBUDGET_RV,'VTURB_BU_RRV')
   ELSE IF ( KRRL >= 1 ) THEN
-    CALL BUDGET (PRRS(:,:,:,1)-PRRS(:,:,:,2),6,'VTURB_BU_RRV')
+    CALL BUDGET (PRRS(:,:,:,1)-PRRS(:,:,:,2),NBUDGET_RV,'VTURB_BU_RRV')
   ELSE 
-    CALL BUDGET (PRRS(:,:,:,1),6,'VTURB_BU_RRV')
+    CALL BUDGET (PRRS(:,:,:,1),NBUDGET_RV,'VTURB_BU_RRV')
   END IF
 END IF  
-IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),7,'VTURB_BU_RRC')
-IF (LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4),9,'VTURB_BU_RRI')
+IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),NBUDGET_RC,'VTURB_BU_RRC')
+IF (LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4),NBUDGET_RI,'VTURB_BU_RRI')
 !
 !
 IF (HTURBDIM=='3DIM') THEN
@@ -972,35 +972,35 @@ IF (HTURBDIM=='3DIM') THEN
 END IF
 !
 !
-IF (LBUDGET_U) CALL BUDGET (PRUS,1,'HTURB_BU_RU')
-IF (LBUDGET_V) CALL BUDGET (PRVS,2,'HTURB_BU_RV')
-IF (LBUDGET_W) CALL BUDGET (PRWS,3,'HTURB_BU_RW')
+IF (LBUDGET_U) CALL BUDGET (PRUS,NBUDGET_U,'HTURB_BU_RU')
+IF (LBUDGET_V) CALL BUDGET (PRVS,NBUDGET_V,'HTURB_BU_RV')
+IF (LBUDGET_W) CALL BUDGET (PRWS,NBUDGET_W,'HTURB_BU_RW')
 IF (LBUDGET_TH)  THEN
   IF ( KRRI >= 1 .AND. KRRL >= 1 ) THEN
     CALL BUDGET (PRTHLS+ZLVOCPEXNM*PRRS(:,:,:,2)+ZLSOCPEXNM*PRRS(:,:,:,4) &
-                                                  ,4,'HTURB_BU_RTH')
+                                                  ,NBUDGET_TH,'HTURB_BU_RTH')
   ELSE IF ( KRRL >= 1 ) THEN
-    CALL BUDGET (PRTHLS+ ZLOCPEXNM * PRRS(:,:,:,2),4,'HTURB_BU_RTH')
+    CALL BUDGET (PRTHLS+ ZLOCPEXNM * PRRS(:,:,:,2),NBUDGET_TH,'HTURB_BU_RTH')
   ELSE
-    CALL BUDGET (PRTHLS,4,'HTURB_BU_RTH')
+    CALL BUDGET (PRTHLS,NBUDGET_TH,'HTURB_BU_RTH')
   END IF
 END IF
 IF (LBUDGET_SV) THEN
   DO JSV = 1,NSV
-    CALL BUDGET (PRSVS(:,:,:,JSV),JSV+12,'HTURB_BU_RSV')
+    CALL BUDGET (PRSVS(:,:,:,JSV),NBUDGET_SV1-1+JSV,'HTURB_BU_RSV')
   END DO
 END IF
 IF (LBUDGET_RV) THEN
   IF ( KRRI >= 1 .AND. KRRL >= 1) THEN
-    CALL BUDGET (PRRS(:,:,:,1)-PRRS(:,:,:,2)-PRRS(:,:,:,4),6,'HTURB_BU_RRV')
+    CALL BUDGET (PRRS(:,:,:,1)-PRRS(:,:,:,2)-PRRS(:,:,:,4),NBUDGET_RV,'HTURB_BU_RRV')
   ELSE IF ( KRRL >= 1 ) THEN
-    CALL BUDGET (PRRS(:,:,:,1)-PRRS(:,:,:,2),6,'HTURB_BU_RRV')
+    CALL BUDGET (PRRS(:,:,:,1)-PRRS(:,:,:,2),NBUDGET_RV,'HTURB_BU_RRV')
   ELSE 
-    CALL BUDGET (PRRS(:,:,:,1),6,'HTURB_BU_RRV')
+    CALL BUDGET (PRRS(:,:,:,1),NBUDGET_RV,'HTURB_BU_RRV')
   END IF
 END IF  
-IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),7,'HTURB_BU_RRC')
-IF (LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4),9,'HTURB_BU_RRI')
+IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),NBUDGET_RC,'HTURB_BU_RRC')
+IF (LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4),NBUDGET_RI,'HTURB_BU_RRI')
 !
 !----------------------------------------------------------------------------
 !
@@ -1024,11 +1024,11 @@ CALL TKE_EPS_SOURCES(KKA,KKU,KKL,KMI,PTKET,PLEM,ZLEPS,PDYP,ZTRH,     &
 IF (LBUDGET_TH)  THEN
   IF ( KRRI >= 1 .AND. KRRL >= 1 ) THEN
     CALL BUDGET (PRTHLS+ZLVOCPEXNM*PRRS(:,:,:,2)+ZLSOCPEXNM*PRRS(:,:,:,4) &
-                                                ,4,'DISSH_BU_RTH')
+                                                ,NBUDGET_TH,'DISSH_BU_RTH')
   ELSE IF ( KRRL >= 1 ) THEN
-    CALL BUDGET (PRTHLS+ZLOCPEXNM* PRRS(:,:,:,2),4,'DISSH_BU_RTH')
+    CALL BUDGET (PRTHLS+ZLOCPEXNM* PRRS(:,:,:,2),NBUDGET_TH,'DISSH_BU_RTH')
   ELSE
-    CALL BUDGET (PRTHLS,4,'DISSH_BU_RTH')
+    CALL BUDGET (PRTHLS,NBUDGET_TH,'DISSH_BU_RTH')
   END IF
 END IF
 !
@@ -1131,9 +1131,9 @@ IF ((HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2')) THEN
   END WHERE
  END DO
 !
- IF (LBUDGET_TH) CALL BUDGET (PRTHLS(:,:,:), 4,'NETUR_BU_RTH')
- IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1), 6,'NETUR_BU_RRV')
- IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2), 7,'NETUR_BU_RRC')
+ IF (LBUDGET_TH) CALL BUDGET (PRTHLS(:,:,:), NBUDGET_TH,'NETUR_BU_RTH')
+ IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1), NBUDGET_RV,'NETUR_BU_RRV')
+ IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2), NBUDGET_RC,'NETUR_BU_RRC')
 END IF
 !
 !----------------------------------------------------------------------------
diff --git a/src/MNH/two_way.f90 b/src/MNH/two_way.f90
index 64f72579c..ba399f93a 100644
--- a/src/MNH/two_way.f90
+++ b/src/MNH/two_way.f90
@@ -165,21 +165,21 @@ CALL GOTO_MODEL(KMI)
 !*       2.    BUDGET COMPUTATION
 !              ------------------
 !
-IF (LBUDGET_U)  CALL BUDGET (PRUS,1,'NEST_BU_RU')
-IF (LBUDGET_V)  CALL BUDGET (PRVS,2,'NEST_BU_RV')
-IF (LBUDGET_W)  CALL BUDGET (PRWS,3,'NEST_BU_RW')
-IF (LBUDGET_TH) CALL BUDGET (PRTHS,4,'NEST_BU_RTH')
+IF (LBUDGET_U)  CALL BUDGET (PRUS,NBUDGET_U,'NEST_BU_RU')
+IF (LBUDGET_V)  CALL BUDGET (PRVS,NBUDGET_V,'NEST_BU_RV')
+IF (LBUDGET_W)  CALL BUDGET (PRWS,NBUDGET_W,'NEST_BU_RW')
+IF (LBUDGET_TH) CALL BUDGET (PRTHS,NBUDGET_TH,'NEST_BU_RTH')
 DO JRR=1,KRR
-  IF (JRR==1 .AND. LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,JRR),6,'NEST_BU_RRV')
-  IF (JRR==2 .AND. LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,JRR),7,'NEST_BU_RRC')
-  IF (JRR==3 .AND. LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,JRR),8,'NEST_BU_RRR')
-  IF (JRR==4 .AND. LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,JRR),9,'NEST_BU_RRI')
-  IF (JRR==5 .AND. LBUDGET_RS) CALL BUDGET (PRRS(:,:,:,JRR),10,'NEST_BU_RRS')
-  IF (JRR==6 .AND. LBUDGET_RG) CALL BUDGET (PRRS(:,:,:,JRR),11,'NEST_BU_RRG')
-  IF (JRR==7 .AND. LBUDGET_RH) CALL BUDGET (PRRS(:,:,:,JRR),12,'NEST_BU_RRH')
+  IF (JRR==1 .AND. LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,JRR),NBUDGET_RV,'NEST_BU_RRV')
+  IF (JRR==2 .AND. LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,JRR),NBUDGET_RC,'NEST_BU_RRC')
+  IF (JRR==3 .AND. LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,JRR),NBUDGET_RR,'NEST_BU_RRR')
+  IF (JRR==4 .AND. LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,JRR),NBUDGET_RI,'NEST_BU_RRI')
+  IF (JRR==5 .AND. LBUDGET_RS) CALL BUDGET (PRRS(:,:,:,JRR),NBUDGET_RS,'NEST_BU_RRS')
+  IF (JRR==6 .AND. LBUDGET_RG) CALL BUDGET (PRRS(:,:,:,JRR),NBUDGET_RG,'NEST_BU_RRG')
+  IF (JRR==7 .AND. LBUDGET_RH) CALL BUDGET (PRRS(:,:,:,JRR),NBUDGET_RH,'NEST_BU_RRH')
 ENDDO
 DO JSV=1,KSV
-  IF (LBUDGET_SV)              CALL BUDGET (PRSVS(:,:,:,JSV),12+JSV,'NEST_BU_RSV')
+  IF (LBUDGET_SV)              CALL BUDGET (PRSVS(:,:,:,JSV),NBUDGET_SV1-1+JSV,'NEST_BU_RSV')
 END DO
 !------------------------------------------------------------------------------
 !
diff --git a/src/MNH/viscosity.f90 b/src/MNH/viscosity.f90
index 3b348d47d..54d2170c1 100644
--- a/src/MNH/viscosity.f90
+++ b/src/MNH/viscosity.f90
@@ -193,7 +193,7 @@ IF (OVISC_TH) THEN
 !
 END IF
 !
-IF (LBUDGET_TH) CALL BUDGET (PRTHS,4,'VISC_BU_RU')
+IF (LBUDGET_TH) CALL BUDGET (PRTHS,NBUDGET_TH,'VISC_BU_RTH')
 !
 !-------------------------------------------------------------------------------
 !
@@ -211,13 +211,13 @@ IF (OVISC_R .AND. (SIZE(PRT,1) > 0)) THEN
 !
 END IF
 !
-IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),6,'VISC_BU_RRV')
-IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),7,'VISC_BU_RRC')
-IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,3),8,'VISC_BU_RRR')
-IF (LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4),9,'VISC_BU_RRI')
-IF (LBUDGET_RS) CALL BUDGET (PRRS(:,:,:,5),10,'VISC_BU_RRS')
-IF (LBUDGET_RG) CALL BUDGET (PRRS(:,:,:,6),11,'VISC_BU_RRG')
-IF (LBUDGET_RH) CALL BUDGET (PRRS(:,:,:,7),12,'VISC_BU_RRH')
+IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),NBUDGET_RV,'VISC_BU_RRV')
+IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),NBUDGET_RC,'VISC_BU_RRC')
+IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,3),NBUDGET_RR,'VISC_BU_RRR')
+IF (LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4),NBUDGET_RI,'VISC_BU_RRI')
+IF (LBUDGET_RS) CALL BUDGET (PRRS(:,:,:,5),NBUDGET_RS,'VISC_BU_RRS')
+IF (LBUDGET_RG) CALL BUDGET (PRRS(:,:,:,6),NBUDGET_RG,'VISC_BU_RRG')
+IF (LBUDGET_RH) CALL BUDGET (PRRS(:,:,:,7),NBUDGET_RH,'VISC_BU_RRH')
 !
 !-------------------------------------------------------------------------------
 !
@@ -236,7 +236,7 @@ END IF
 !
 IF (LBUDGET_SV) THEN
   DO  IK = 1, KSV
-    CALL BUDGET (PRSVS(:,:,:,IK), 12+IK, 'VISC_BU_RSV')
+    CALL BUDGET (PRSVS(:,:,:,IK), NBUDGET_SV1-1+IK, 'VISC_BU_RSV')
   END DO
 END IF
 !
@@ -334,8 +334,8 @@ ENDIF
   ENDIF
 END IF
 !
-IF (LBUDGET_U) CALL BUDGET (PRUS,1,'VISC_BU_RU')
-IF (LBUDGET_V) CALL BUDGET (PRVS,2,'VISC_BU_RV')
-IF (LBUDGET_W) CALL BUDGET (PRWS,2,'VISC_BU_RW')
+IF (LBUDGET_U) CALL BUDGET (PRUS,NBUDGET_U,'VISC_BU_RU')
+IF (LBUDGET_V) CALL BUDGET (PRVS,NBUDGET_V,'VISC_BU_RV')
+IF (LBUDGET_W) CALL BUDGET (PRWS,NBUDGET_V,'VISC_BU_RW')
 !
 END SUBROUTINE VISCOSITY
-- 
GitLab