diff --git a/src/MNH/budget.f90 b/src/MNH/budget.f90
index bead348bf8baaeb46487fee30d58dfbd41f65c4e..c68bd5fb72e976d919350ea0730ba75993b0773f 100644
--- a/src/MNH/budget.f90
+++ b/src/MNH/budget.f90
@@ -139,31 +139,31 @@ IF (LLES_CALL) CALL LES_BUDGET(PVARS,KBUDN,HBUVAR)
 IF (.NOT. LBU_ENABLE) RETURN
 !
 SELECT CASE (KBUDN)
-  CASE (1) 
+  CASE ( NBUDGET_U )
     IF (.NOT. LBU_RU) RETURN 
-  CASE (2) 
+  CASE ( NBUDGET_V )
     IF (.NOT. LBU_RV) RETURN 
-  CASE (3) 
-    IF (.NOT. LBU_RW) RETURN 
-  CASE (4) 
+  CASE ( NBUDGET_W )
+    IF (.NOT. LBU_RW) RETURN
+  CASE (NBUDGET_TH)
     IF (.NOT. LBU_RTH) RETURN 
-  CASE (5) 
+  CASE ( NBUDGET_TKE )
     IF (.NOT. LBU_RTKE) RETURN 
-  CASE (6) 
+  CASE ( NBUDGET_RV )
     IF (.NOT. LBU_RRV) RETURN 
-  CASE (7) 
+  CASE ( NBUDGET_RC )
     IF (.NOT. LBU_RRC) RETURN 
-  CASE (8) 
+  CASE (NBUDGET_RR )
     IF (.NOT. LBU_RRR) RETURN 
-  CASE (9) 
+  CASE ( NBUDGET_RI )
     IF (.NOT. LBU_RRI) RETURN 
-  CASE (10) 
+  CASE ( NBUDGET_RS )
     IF (.NOT. LBU_RRS) RETURN 
-  CASE (11) 
+  CASE ( NBUDGET_RG )
     IF (.NOT. LBU_RRG) RETURN 
-  CASE (12) 
+  CASE ( NBUDGET_RH )
     IF (.NOT. LBU_RRH) RETURN 
-  CASE (13:) 
+  CASE ( NBUDGET_SV1 : )
     IF (.NOT. LBU_RSV) RETURN 
 END SELECT
 !
@@ -173,44 +173,44 @@ CALL SECOND_MNH(ZTIME1)
 !
 SELECT CASE (KBUDN)
 !
-  CASE (1)  !            ==>  RU BUDGET
+  CASE ( NBUDGET_U )   !            ==>  RU BUDGET
     CALL BUDGET_CASE(XBURU)
 !
-  CASE (2)  !            ==>  RV BUDGET
+  CASE ( NBUDGET_V )   !            ==>  RV BUDGET
     CALL BUDGET_CASE(XBURV)
 !
-  CASE (3)  !            ==>  RW BUDGET
+  CASE ( NBUDGET_W )   !            ==>  RW BUDGET
     CALL BUDGET_CASE(XBURW)
 !
-  CASE (4)  !            ==>  RTH BUDGET
+  CASE ( NBUDGET_TH )  !            ==>  RTH BUDGET
     CALL BUDGET_CASE(XBURTH)
 !
-  CASE (5)  !            ==>  RTKE BUDGET
+  CASE ( NBUDGET_TKE ) !            ==>  RTKE BUDGET
     CALL BUDGET_CASE(XBURTKE)
 !
-  CASE (6)  !            ==>  RRV BUDGET
+  CASE ( NBUDGET_RV )  !            ==>  RRV BUDGET
     CALL BUDGET_CASE(XBURRV)
 !
-  CASE (7)  !            ==>  RRC BUDGET
+  CASE ( NBUDGET_RC )  !            ==>  RRC BUDGET
     CALL BUDGET_CASE(XBURRC)
 !
-  CASE (8)  !            ==>  RRR BUDGET
+  CASE ( NBUDGET_RR )  !            ==>  RRR BUDGET
     CALL BUDGET_CASE(XBURRR)
 !
-  CASE (9)  !            ==>  RRI BUDGET
+  CASE ( NBUDGET_RI )  !            ==>  RRI BUDGET
     CALL BUDGET_CASE(XBURRI)
 !
-  CASE (10) !            ==>  RRS BUDGET
+  CASE ( NBUDGET_RS )  !            ==>  RRS BUDGET
     CALL BUDGET_CASE(XBURRS)
 !
-  CASE (11) !            ==>  RRG BUDGET
+  CASE ( NBUDGET_RG )  !            ==>  RRG BUDGET
     CALL BUDGET_CASE(XBURRG)
 !
-  CASE (12) !            ==>  RRH BUDGET
+  CASE ( NBUDGET_RH )  !            ==>  RRH BUDGET
     CALL BUDGET_CASE(XBURRH)
 !
-  CASE (13:)!            ==>  RSVx BUDGET
-    IBUSV = KBUDN - 12
+  CASE ( NBUDGET_SV1 : ) !          ==>  RSVx BUDGET
+    IBUSV = KBUDN - ( NBUDGET_SV1 - 1 )
     IF( IBUSV <= NSV ) THEN 
       CALL BUDGET_CASE(XBURSV(:,:,:,:,IBUSV))
     ELSE
diff --git a/src/MNH/endstep.f90 b/src/MNH/endstep.f90
index 9a3da2c5443fb7d07a7e43c62891df3b1d1e7ea9..f5b1244bfb2cb2c1b97ffbbab9e7a00a34cadab6 100644
--- a/src/MNH/endstep.f90
+++ b/src/MNH/endstep.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: /srv/cvsroot/MNH-VX-Y-Z/src/MNH/endstep.f90,v $ $Revision: 1.2.2.2.2.2.16.1.2.5 $ $Date: 2014/04/22 14:31:38 $
-!-----------------------------------------------------------------
 !     ###################
       MODULE MODI_ENDSTEP
 !     ###################
@@ -521,42 +517,42 @@ IF (LBU_ENABLE) THEN
   NBUPROCCTR(1:12+KSV)=3
   NBUCTR_ACTV(1:12+KSV)=3
 !
-  IF (LBUDGET_U)   CALL BUDGET (PUT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,1,'AVEF_BU_RU')
-  IF (LBUDGET_V)   CALL BUDGET (PVT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,2,'AVEF_BU_RV')
-  IF (LBUDGET_W)   CALL BUDGET (PWT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,3,'AVEF_BU_RW')
-  IF (LBUDGET_TH)  CALL BUDGET (PTHT(:,:,:)*PRHODJ(:,:,:)/PTSTEP,4,'AVEF_BU_RTH')
-  IF (LBUDGET_TKE) CALL BUDGET (PTKET(:,:,:)*PRHODJ(:,:,:)/PTSTEP,5,'AVEF_BU_RTKE')
-  IF (LBUDGET_RV)  CALL BUDGET (PRT(:,:,:,1)*PRHODJ(:,:,:)/PTSTEP,6,'AVEF_BU_RRV')
-  IF (LBUDGET_RC)  CALL BUDGET (PRT(:,:,:,2)*PRHODJ(:,:,:)/PTSTEP,7,'AVEF_BU_RRC')
-  IF (LBUDGET_RR)  CALL BUDGET (PRT(:,:,:,3)*PRHODJ(:,:,:)/PTSTEP,8,'AVEF_BU_RRR')
-  IF (LBUDGET_RI)  CALL BUDGET (PRT(:,:,:,4)*PRHODJ(:,:,:)/PTSTEP,9,'AVEF_BU_RRI')
-  IF (LBUDGET_RS)  CALL BUDGET (PRT(:,:,:,5)*PRHODJ(:,:,:)/PTSTEP,10,'AVEF_BU_RRS')
-  IF (LBUDGET_RG)  CALL BUDGET (PRT(:,:,:,6)*PRHODJ(:,:,:)/PTSTEP,11,'AVEF_BU_RRG')
-  IF (LBUDGET_RH)  CALL BUDGET (PRT(:,:,:,7)*PRHODJ(:,:,:)/PTSTEP,12,'AVEF_BU_RRH')
+  IF (LBUDGET_U)   CALL BUDGET( PUT(:,:,:)   * PRHODJ(:,:,:) / PTSTEP, NBUDGET_U,   'AVEF_BU_RU'   )
+  IF (LBUDGET_V)   CALL BUDGET( PVT(:,:,:)   * PRHODJ(:,:,:) / PTSTEP, NBUDGET_V,   'AVEF_BU_RV'   )
+  IF (LBUDGET_W)   CALL BUDGET( PWT(:,:,:)   * PRHODJ(:,:,:) / PTSTEP, NBUDGET_W,   'AVEF_BU_RW'   )
+  IF (LBUDGET_TH)  CALL BUDGET( PTHT(:,:,:)  * PRHODJ(:,:,:) / PTSTEP, NBUDGET_TH,  'AVEF_BU_RTH'  )
+  IF (LBUDGET_TKE) CALL BUDGET( PTKET(:,:,:) * PRHODJ(:,:,:) / PTSTEP, NBUDGET_TKE, 'AVEF_BU_RTKE' )
+  IF (LBUDGET_RV)  CALL BUDGET( PRT(:,:,:,1) * PRHODJ(:,:,:) / PTSTEP, NBUDGET_RV,  'AVEF_BU_RRV'  )
+  IF (LBUDGET_RC)  CALL BUDGET( PRT(:,:,:,2) * PRHODJ(:,:,:) / PTSTEP, NBUDGET_RC,  'AVEF_BU_RRC'  )
+  IF (LBUDGET_RR)  CALL BUDGET( PRT(:,:,:,3) * PRHODJ(:,:,:) / PTSTEP, NBUDGET_RR,  'AVEF_BU_RRR'  )
+  IF (LBUDGET_RI)  CALL BUDGET( PRT(:,:,:,4) * PRHODJ(:,:,:) / PTSTEP, NBUDGET_RI,  'AVEF_BU_RRI'  )
+  IF (LBUDGET_RS)  CALL BUDGET( PRT(:,:,:,5) * PRHODJ(:,:,:) / PTSTEP, NBUDGET_RS,  'AVEF_BU_RRS'  )
+  IF (LBUDGET_RG)  CALL BUDGET( PRT(:,:,:,6) * PRHODJ(:,:,:) / PTSTEP, NBUDGET_RG,  'AVEF_BU_RRG'  )
+  IF (LBUDGET_RH)  CALL BUDGET( PRT(:,:,:,7) * PRHODJ(:,:,:) / PTSTEP, NBUDGET_RH,  'AVEF_BU_RRH'  )
   IF (LBUDGET_SV) THEN
     DO JSV=1,KSV
-      CALL BUDGET (PSVT(:,:,:,JSV)*PRHODJ(:,:,:)/PTSTEP,12+JSV,'AVEF_BU_RSV')
+      CALL BUDGET( PSVT(:,:,:,JSV) * PRHODJ(:,:,:) / PTSTEP, JSV + NBUDGET_SV1 - 1, 'AVEF_BU_RSV' )
     END DO
   END IF
 !
   NBUPROCCTR(1:12+KSV)=2
   NBUCTR_ACTV(1:12+KSV)=2
 !
-  IF (LBUDGET_U)   CALL BUDGET (PUS*MXM(PRHODJ)/PTSTEP,1,'ENDF_BU_RU')
-  IF (LBUDGET_V)   CALL BUDGET (PVS*MYM(PRHODJ)/PTSTEP,2,'ENDF_BU_RV')
-  IF (LBUDGET_W)   CALL BUDGET (PWS*MZM(1,IKU,1,PRHODJ)/PTSTEP,3,'ENDF_BU_RW')
-  IF (LBUDGET_TH)  CALL BUDGET (PTHS*PRHODJ/PTSTEP,4,'ENDF_BU_RTH')
-  IF (LBUDGET_TKE) CALL BUDGET (PTKES*PRHODJ/PTSTEP,5,'ENDF_BU_RTKE')
-  IF (LBUDGET_RV)  CALL BUDGET (PRS(:,:,:,1)*PRHODJ/PTSTEP,6,'ENDF_BU_RRV')
-  IF (LBUDGET_RC)  CALL BUDGET (PRS(:,:,:,2)*PRHODJ/PTSTEP,7,'ENDF_BU_RRC')
-  IF (LBUDGET_RR)  CALL BUDGET (PRS(:,:,:,3)*PRHODJ/PTSTEP,8,'ENDF_BU_RRR')
-  IF (LBUDGET_RI)  CALL BUDGET (PRS(:,:,:,4)*PRHODJ/PTSTEP,9,'ENDF_BU_RRI')
-  IF (LBUDGET_RS)  CALL BUDGET (PRS(:,:,:,5)*PRHODJ/PTSTEP,10,'ENDF_BU_RRS')
-  IF (LBUDGET_RG)  CALL BUDGET (PRS(:,:,:,6)*PRHODJ/PTSTEP,11,'ENDF_BU_RRG')
-  IF (LBUDGET_RH)  CALL BUDGET (PRS(:,:,:,7)*PRHODJ/PTSTEP,12,'ENDF_BU_RRH')
+  IF (LBUDGET_U)   CALL BUDGET( PUS          * MXM(PRHODJ)         / PTSTEP, NBUDGET_U,   'ENDF_BU_RU'   )
+  IF (LBUDGET_V)   CALL BUDGET( PVS          * MYM(PRHODJ)         / PTSTEP, NBUDGET_V,   'ENDF_BU_RV'   )
+  IF (LBUDGET_W)   CALL BUDGET( PWS          * MZM(1,IKU,1,PRHODJ) / PTSTEP, NBUDGET_W,   'ENDF_BU_RW'   )
+  IF (LBUDGET_TH)  CALL BUDGET( PTHS         * PRHODJ              / PTSTEP, NBUDGET_TH,  'ENDF_BU_RTH'  )
+  IF (LBUDGET_TKE) CALL BUDGET( PTKES        * PRHODJ              / PTSTEP, NBUDGET_TKE, 'ENDF_BU_RTKE' )
+  IF (LBUDGET_RV)  CALL BUDGET( PRS(:,:,:,1) * PRHODJ              / PTSTEP, NBUDGET_RV,  'ENDF_BU_RRV'  )
+  IF (LBUDGET_RC)  CALL BUDGET( PRS(:,:,:,2) * PRHODJ              / PTSTEP, NBUDGET_RC,  'ENDF_BU_RRC'  )
+  IF (LBUDGET_RR)  CALL BUDGET( PRS(:,:,:,3) * PRHODJ              / PTSTEP, NBUDGET_RR,  'ENDF_BU_RRR'  )
+  IF (LBUDGET_RI)  CALL BUDGET( PRS(:,:,:,4) * PRHODJ              / PTSTEP, NBUDGET_RI,  'ENDF_BU_RRI'  )
+  IF (LBUDGET_RS)  CALL BUDGET( PRS(:,:,:,5) * PRHODJ              / PTSTEP, NBUDGET_RS,  'ENDF_BU_RRS'  )
+  IF (LBUDGET_RG)  CALL BUDGET( PRS(:,:,:,6) * PRHODJ              / PTSTEP, NBUDGET_RG,  'ENDF_BU_RRG'  )
+  IF (LBUDGET_RH)  CALL BUDGET( PRS(:,:,:,7) * PRHODJ              / PTSTEP, NBUDGET_RH,  'ENDF_BU_RRH'  )
   IF (LBUDGET_SV) THEN
     DO JSV=1,KSV
-      CALL BUDGET (PSVS(:,:,:,JSV)*PRHODJ/PTSTEP,JSV+12,'ENDF_BU_RSV')
+      CALL BUDGET( PSVS(:,:,:,JSV) * PRHODJ / PTSTEP, JSV + NBUDGET_SV1 - 1, 'ENDF_BU_RSV' )
     END DO
   END IF
 END IF
diff --git a/src/MNH/ini_budget.f90 b/src/MNH/ini_budget.f90
index f0707d44a4f05f3929ac26bf41a1504d98f88bce..6f188f7ef4e1530aa3e5e690a00d9510a5b5b917 100644
--- a/src/MNH/ini_budget.f90
+++ b/src/MNH/ini_budget.f90
@@ -419,102 +419,102 @@ YEND_COMMENT(:) = ' '
 !                        Budget of RU
 IF (LBU_RU) THEN
   IPROC=4
-  IPROACTV(1,IPROC) = NASSEU
+  IPROACTV(NBUDGET_U, IPROC) = NASSEU
   IPROC=IPROC+1
-  IF( NMODEL>1 ) IPROACTV(1,IPROC) = NNESTU
+  IF( NMODEL>1 ) IPROACTV(NBUDGET_U, IPROC) = NNESTU
   IPROC=IPROC+1
-  IF( LFORCING ) IPROACTV(1,IPROC)  = NFRCU
+  IF( LFORCING ) IPROACTV(NBUDGET_U, IPROC)  = NFRCU
   IPROC=IPROC+1
-  IF( ONUDGING ) IPROACTV(1,IPROC)  = NNUDU
+  IF( ONUDGING ) IPROACTV(NBUDGET_U, IPROC)  = NNUDU
   IPROC=IPROC+1
   IF ( .NOT. LCARTESIAN ) THEN
-    IPROACTV(1,IPROC) = NCURVU 
+    IPROACTV(NBUDGET_U, IPROC) = NCURVU
   ELSE
-    IPROACTV(1,IPROC) = 4
+    IPROACTV(NBUDGET_U, IPROC) = 4
   END IF
   IPROC=IPROC+1
   IF ( LCORIO ) THEN  
-    IPROACTV(1,IPROC) = NCORU 
+    IPROACTV(NBUDGET_U, IPROC) = NCORU
   ELSE
-    IPROACTV(1,IPROC) = 4
+    IPROACTV(NBUDGET_U, IPROC) = 4
   END IF
   IPROC=IPROC+1
-  IF ( ONUMDIFU ) IPROACTV(1,IPROC) = NDIFU
+  IF ( ONUMDIFU ) IPROACTV(NBUDGET_U, IPROC) = NDIFU
   IPROC=IPROC+1
   IF ( OHORELAX_UVWTH .OR. OVE_RELAX ) THEN   
-    IPROACTV(1,IPROC) = NRELU 
+    IPROACTV(NBUDGET_U, IPROC) = NRELU
   ELSE
     IF(OVE_RELAX .OR. OHORELAX_UVWTH .OR. OHORELAX_RV .OR.                 &
      OHORELAX_RC .OR. OHORELAX_RR .OR. OHORELAX_RI .OR. OHORELAX_RS .OR.   &
      OHORELAX_RG .OR. OHORELAX_RH .OR. OHORELAX_TKE .OR. ANY(OHORELAX_SV)) THEN
-      IPROACTV(1,IPROC) = 4
+      IPROACTV(NBUDGET_U, IPROC) = 4
     ELSE
-      IPROACTV(1,IPROC) = 3
+      IPROACTV(NBUDGET_U, IPROC) = 3
     END IF
   END IF
   IPROC=IPROC+1
-  IF( ODRAGTREE ) IPROACTV(1,IPROC)  = NDRAGU
+  IF( ODRAGTREE ) IPROACTV(NBUDGET_U, IPROC)  = NDRAGU
   IPROC=IPROC+1
-  IF ( HTURB /= 'NONE' ) IPROACTV(1,IPROC) = NVTURBU
+  IF ( HTURB /= 'NONE' ) IPROACTV(NBUDGET_U, IPROC) = NVTURBU
   IPROC=IPROC+1
   IF ( HTURB /= 'NONE' .AND. HTURBDIM == '3DIM' ) THEN
-    IPROACTV(1,IPROC) = NHTURBU 
+    IPROACTV(NBUDGET_U, IPROC) = NHTURBU
   ELSE
     IF ( HTURB /= 'NONE' ) THEN
-      IPROACTV(1,IPROC) = 4
+      IPROACTV(NBUDGET_U, IPROC) = 4
     ELSE
-      IPROACTV(1,IPROC) = 3
+      IPROACTV(NBUDGET_U, IPROC) = 3
     END IF
   END IF 
   IPROC=IPROC+1
-  IF ( HSCONV == 'EDKF' ) IPROACTV(1,IPROC) = NMAFLU
+  IF ( HSCONV == 'EDKF' ) IPROACTV(NBUDGET_U, IPROC) = NMAFLU
   IPROC=IPROC+1
-  IPROACTV(1,IPROC) = NADVU
+  IPROACTV(NBUDGET_U, IPROC) = NADVU
   IPROC=IPROC+1
-  IPROACTV(1,IPROC) = NPRESU 
+  IPROACTV(NBUDGET_U, IPROC) = NPRESU
 !
-  YWORK2(1,1) = 'INIF_'
-  YWORK2(1,2) = 'ENDF_'
-  YWORK2(1,3) = 'AVEF_'
+  YWORK2(NBUDGET_U, 1) = 'INIF_'
+  YWORK2(NBUDGET_U, 2) = 'ENDF_'
+  YWORK2(NBUDGET_U, 3) = 'AVEF_'
   IPROC=4
-  YWORK2(1,IPROC) = 'ASSE_'
+  YWORK2(NBUDGET_U, IPROC) = 'ASSE_'
   IPROC=IPROC+1
-  YWORK2(1,IPROC) = 'NEST_'
+  YWORK2(NBUDGET_U, IPROC) = 'NEST_'
   IPROC=IPROC+1
-  YWORK2(1,IPROC) = 'FRC_'
+  YWORK2(NBUDGET_U, IPROC) = 'FRC_'
   IPROC=IPROC+1
-  YWORK2(1,IPROC) = 'NUD_'
+  YWORK2(NBUDGET_U, IPROC) = 'NUD_'
   IPROC=IPROC+1
-  YWORK2(1,IPROC) = 'CURV_'
+  YWORK2(NBUDGET_U, IPROC) = 'CURV_'
   IPROC=IPROC+1
-  YWORK2(1,IPROC) = 'COR_'
+  YWORK2(NBUDGET_U, IPROC) = 'COR_'
   IPROC=IPROC+1
-  YWORK2(1,IPROC) = 'DIF_'
+  YWORK2(NBUDGET_U, IPROC) = 'DIF_'
   IPROC=IPROC+1
-  YWORK2(1,IPROC) = 'REL_'
+  YWORK2(NBUDGET_U, IPROC) = 'REL_'
   IPROC=IPROC+1
-  YWORK2(1,IPROC) = 'DRAG_'
+  YWORK2(NBUDGET_U, IPROC) = 'DRAG_'
   IPROC=IPROC+1
-  YWORK2(1,IPROC) = 'VTURB_'
+  YWORK2(NBUDGET_U, IPROC) = 'VTURB_'
   IPROC=IPROC+1
-  YWORK2(1,IPROC) = 'HTURB_'
+  YWORK2(NBUDGET_U, IPROC) = 'HTURB_'
   IPROC=IPROC+1
-  YWORK2(1,IPROC) = 'MAFL_'
+  YWORK2(NBUDGET_U, IPROC) = 'MAFL_'
   IPROC=IPROC+1
-  YWORK2(1,IPROC) = 'ADV_'
+  YWORK2(NBUDGET_U, IPROC) = 'ADV_'
   IPROC=IPROC+1
-  YWORK2(1,IPROC) = 'PRES_'
+  YWORK2(NBUDGET_U, IPROC) = 'PRES_'
 !
-  YEND_COMMENT(1) = 'BU_RU'
-  NBUPROCNBR(1) = 3
+  YEND_COMMENT(NBUDGET_U) = 'BU_RU'
+  NBUPROCNBR(NBUDGET_U) = 3
+!
+  CBUACTION(NBUDGET_U, 1) = 'IG'
+  CBUACTION(NBUDGET_U, 2) = 'CC'
+  CBUACTION(NBUDGET_U, 3) = 'ES'
 !
-  CBUACTION(1,1) = 'IG'
-  CBUACTION(1,2) = 'CC'
-  CBUACTION(1,3) = 'ES'
-!  
   DO JJ=1,3
-    CBUCOMMENT(1,JJ) = ADJUSTL( ADJUSTR( YWORK2(1,JJ) ) // &
-                                ADJUSTL( YEND_COMMENT(1) ) )
+    CBUCOMMENT(NBUDGET_U, JJ) = ADJUSTL( ADJUSTR( YWORK2(NBUDGET_U, JJ) ) // &
+                                ADJUSTL( YEND_COMMENT(NBUDGET_U) ) )
   END DO
 !
 END IF
@@ -522,102 +522,102 @@ END IF
 !                        Budget of RV
 IF (LBU_RV) THEN
   IPROC=4
-  IPROACTV(2,IPROC) = NASSEV
+  IPROACTV(NBUDGET_V, IPROC) = NASSEV
   IPROC=IPROC+1 
-  IF( NMODEL>1 ) IPROACTV(2,IPROC) = NNESTV
+  IF( NMODEL>1 ) IPROACTV(NBUDGET_V, IPROC) = NNESTV
   IPROC=IPROC+1 
-  IF( LFORCING ) IPROACTV(2,IPROC)  = NFRCV
+  IF( LFORCING ) IPROACTV(NBUDGET_V, IPROC)  = NFRCV
   IPROC=IPROC+1 
-  IF( ONUDGING ) IPROACTV(2,IPROC)  = NNUDV
+  IF( ONUDGING ) IPROACTV(NBUDGET_V, IPROC)  = NNUDV
   IPROC=IPROC+1
   IF ( .NOT. LCARTESIAN ) THEN
-    IPROACTV(2,IPROC) = NCURVV 
+    IPROACTV(NBUDGET_V, IPROC) = NCURVV
   ELSE
-    IPROACTV(2,IPROC) = 4
+    IPROACTV(NBUDGET_V, IPROC) = 4
   END IF
   IPROC=IPROC+1 
   IF ( LCORIO ) THEN  
-    IPROACTV(2,IPROC) = NCORV 
+    IPROACTV(NBUDGET_V, IPROC) = NCORV
   ELSE
-    IPROACTV(2,IPROC) = 4
+    IPROACTV(NBUDGET_V, IPROC) = 4
   END IF
   IPROC=IPROC+1 
-  IF ( ONUMDIFU ) IPROACTV(2,IPROC) = NDIFV
+  IF ( ONUMDIFU ) IPROACTV(NBUDGET_V, IPROC) = NDIFV
   IPROC=IPROC+1 
   IF ( OHORELAX_UVWTH .OR. OVE_RELAX ) THEN   
-    IPROACTV(2,IPROC) = NRELV 
+    IPROACTV(NBUDGET_V, IPROC) = NRELV
   ELSE
     IF(OVE_RELAX .OR. OHORELAX_UVWTH .OR. OHORELAX_RV .OR.                 &
      OHORELAX_RC .OR. OHORELAX_RR .OR. OHORELAX_RI .OR. OHORELAX_RS .OR.   &
      OHORELAX_RG .OR. OHORELAX_RH .OR. OHORELAX_TKE .OR. ANY(OHORELAX_SV)) THEN
-      IPROACTV(2,IPROC) = 4
+      IPROACTV(NBUDGET_V, IPROC) = 4
     ELSE
-      IPROACTV(2,IPROC) = 3
+      IPROACTV(NBUDGET_V, IPROC) = 3
     END IF
   END IF
   IPROC=IPROC+1
-  IF( ODRAGTREE ) IPROACTV(2,IPROC)  = NDRAGV
+  IF( ODRAGTREE ) IPROACTV(NBUDGET_V, IPROC)  = NDRAGV
   IPROC=IPROC+1
-  IF ( HTURB /= 'NONE' ) IPROACTV(2,IPROC) = NVTURBV
+  IF ( HTURB /= 'NONE' ) IPROACTV(NBUDGET_V, IPROC) = NVTURBV
   IPROC=IPROC+1 
   IF ( HTURB /= 'NONE' .AND. HTURBDIM == '3DIM' ) THEN
-    IPROACTV(2,IPROC) = NHTURBV 
+    IPROACTV(NBUDGET_V, IPROC) = NHTURBV
   ELSE
     IF ( HTURB /= 'NONE' ) THEN
-      IPROACTV(2,IPROC) = 4
+      IPROACTV(NBUDGET_V, IPROC) = 4
     ELSE
-      IPROACTV(2,IPROC) = 3
+      IPROACTV(NBUDGET_V, IPROC) = 3
     END IF
   END IF 
   IPROC=IPROC+1 
-  IF ( HSCONV == 'EDKF' ) IPROACTV(2,IPROC) = NMAFLV
+  IF ( HSCONV == 'EDKF' ) IPROACTV(NBUDGET_V, IPROC) = NMAFLV
   IPROC=IPROC+1 
-  IPROACTV(2,IPROC) = NADVV 
+  IPROACTV(NBUDGET_V, IPROC) = NADVV
   IPROC=IPROC+1
-  IPROACTV(2,IPROC) = NPRESV 
+  IPROACTV(NBUDGET_V, IPROC) = NPRESV
 !
-  YWORK2(2,1) = 'INIF_'
-  YWORK2(2,2) = 'ENDF_'
-  YWORK2(2,3) = 'AVEF_'
+  YWORK2(NBUDGET_V, 1) = 'INIF_'
+  YWORK2(NBUDGET_V, 2) = 'ENDF_'
+  YWORK2(NBUDGET_V, 3) = 'AVEF_'
   IPROC=4
-  YWORK2(2,IPROC) = 'ASSE_'
+  YWORK2(NBUDGET_V, IPROC) = 'ASSE_'
   IPROC=IPROC+1 
-  YWORK2(2,IPROC) = 'NEST_'
+  YWORK2(NBUDGET_V, IPROC) = 'NEST_'
   IPROC=IPROC+1 
-  YWORK2(2,IPROC) = 'FRC_'
+  YWORK2(NBUDGET_V, IPROC) = 'FRC_'
   IPROC=IPROC+1 
-  YWORK2(2,IPROC) = 'NUD_'
+  YWORK2(NBUDGET_V, IPROC) = 'NUD_'
   IPROC=IPROC+1
-  YWORK2(2,IPROC) = 'CURV_'
+  YWORK2(NBUDGET_V, IPROC) = 'CURV_'
   IPROC=IPROC+1 
-  YWORK2(2,IPROC) = 'COR_'
+  YWORK2(NBUDGET_V, IPROC) = 'COR_'
   IPROC=IPROC+1 
-  YWORK2(2,IPROC) = 'DIF_'
+  YWORK2(NBUDGET_V, IPROC) = 'DIF_'
   IPROC=IPROC+1 
-  YWORK2(2,IPROC) = 'REL_'
+  YWORK2(NBUDGET_V, IPROC) = 'REL_'
   IPROC=IPROC+1
-  YWORK2(2,IPROC) = 'DRAG_' 
+  YWORK2(NBUDGET_V, IPROC) = 'DRAG_'
   IPROC=IPROC+1 
-  YWORK2(2,IPROC) = 'VTURB_'
+  YWORK2(NBUDGET_V, IPROC) = 'VTURB_'
   IPROC=IPROC+1 
-  YWORK2(2,IPROC) = 'HTURB_'
+  YWORK2(NBUDGET_V, IPROC) = 'HTURB_'
   IPROC=IPROC+1 
-  YWORK2(2,IPROC) = 'MAFL_'
+  YWORK2(NBUDGET_V, IPROC) = 'MAFL_'
   IPROC=IPROC+1 
-  YWORK2(2,IPROC) = 'ADV_'
+  YWORK2(NBUDGET_V, IPROC) = 'ADV_'
   IPROC=IPROC+1 
-  YWORK2(2,IPROC) = 'PRES_'
+  YWORK2(NBUDGET_V, IPROC) = 'PRES_'
 !
-  YEND_COMMENT(2) = 'BU_RV'
-  NBUPROCNBR(2) = 3
+  YEND_COMMENT(NBUDGET_V) = 'BU_RV'
+  NBUPROCNBR(NBUDGET_V) = 3
+!
+  CBUACTION(NBUDGET_V, 1) = 'IG'
+  CBUACTION(NBUDGET_V, 2) = 'CC'
+  CBUACTION(NBUDGET_V, 3) = 'ES'
 !
-  CBUACTION(2,1) = 'IG'
-  CBUACTION(2,2) = 'CC'
-  CBUACTION(2,3) = 'ES'
-!  
   DO JJ=1,3
-    CBUCOMMENT(2,JJ) = ADJUSTL( ADJUSTR( YWORK2(2,JJ) ) // &
-                                ADJUSTL( YEND_COMMENT(2) ) )
+    CBUCOMMENT(NBUDGET_V, JJ) = ADJUSTL( ADJUSTR( YWORK2(NBUDGET_V, JJ) ) // &
+                                ADJUSTL( YEND_COMMENT(NBUDGET_V) ) )
   END DO
 !
 END IF
@@ -625,98 +625,98 @@ END IF
 !                        Budget of RW
 IF (LBU_RW) THEN
   IPROC=4
-  IPROACTV(3,IPROC) = NASSEW 
+  IPROACTV(NBUDGET_W, IPROC) = NASSEW
   IPROC=IPROC+1
-  IF( NMODEL>1 ) IPROACTV(3,IPROC) = NNESTW
+  IF( NMODEL>1 ) IPROACTV(NBUDGET_W, IPROC) = NNESTW
   IPROC=IPROC+1
-  IF( LFORCING ) IPROACTV(3,IPROC)  = NFRCW
+  IF( LFORCING ) IPROACTV(NBUDGET_W, IPROC)  = NFRCW
   IPROC=IPROC+1
-  IF( ONUDGING ) IPROACTV(3,IPROC)  = NNUDW
+  IF( ONUDGING ) IPROACTV(NBUDGET_W, IPROC)  = NNUDW
   IPROC=IPROC+1
   IF ( .NOT. LCARTESIAN ) THEN
-    IPROACTV(3,IPROC) = NCURVW 
+    IPROACTV(NBUDGET_W, IPROC) = NCURVW
   ELSE
-    IPROACTV(3,IPROC) = 4
+    IPROACTV(NBUDGET_W, IPROC) = 4
   END IF
   IPROC=IPROC+1
   IF ( LCORIO ) THEN  
-    IPROACTV(3,IPROC) = NCORW 
+    IPROACTV(NBUDGET_W, IPROC) = NCORW
   ELSE
-    IPROACTV(3,IPROC) = 4
+    IPROACTV(NBUDGET_W, IPROC) = 4
   END IF
   IPROC=IPROC+1 
-  IF ( ONUMDIFU ) IPROACTV(3,IPROC) = NDIFW
+  IF ( ONUMDIFU ) IPROACTV(NBUDGET_W, IPROC) = NDIFW
   IPROC=IPROC+1
   IF ( OHORELAX_UVWTH .OR. OVE_RELAX ) THEN   
-    IPROACTV(3,IPROC) = NRELW 
+    IPROACTV(NBUDGET_W, IPROC) = NRELW
   ELSE
     IF(OVE_RELAX .OR. OHORELAX_UVWTH .OR. OHORELAX_RV .OR.                 &
      OHORELAX_RC .OR. OHORELAX_RR .OR. OHORELAX_RI .OR. OHORELAX_RS .OR.   &
      OHORELAX_RG .OR. OHORELAX_RH .OR. OHORELAX_TKE .OR. ANY(OHORELAX_SV)) THEN
-      IPROACTV(3,IPROC) = 4
+      IPROACTV(NBUDGET_W, IPROC) = 4
     ELSE
-      IPROACTV(3,IPROC) = 3
+      IPROACTV(NBUDGET_W, IPROC) = 3
     END IF
   END IF
   IPROC=IPROC+1
-  IF ( HTURB /= 'NONE' ) IPROACTV(3,IPROC) = NVTURBW
+  IF ( HTURB /= 'NONE' ) IPROACTV(NBUDGET_W, IPROC) = NVTURBW
   IPROC=IPROC+1
   IF ( HTURB /= 'NONE' .AND. HTURBDIM == '3DIM' ) THEN
-    IPROACTV(3,IPROC) = NHTURBW 
+    IPROACTV(NBUDGET_W, IPROC) = NHTURBW
   ELSE
     IF ( HTURB /= 'NONE' ) THEN
-      IPROACTV(3,IPROC) = 4
+      IPROACTV(NBUDGET_W, IPROC) = 4
     ELSE
-      IPROACTV(3,IPROC) = 3
+      IPROACTV(NBUDGET_W, IPROC) = 3
     END IF
   END IF 
   IPROC=IPROC+1
-  IPROACTV(3,IPROC) = NGRAVW
+  IPROACTV(NBUDGET_W, IPROC) = NGRAVW
   IPROC=IPROC+1
-  IPROACTV(3,IPROC) = NADVW 
+  IPROACTV(NBUDGET_W, IPROC) = NADVW
   IPROC=IPROC+1
-  IPROACTV(3,IPROC) = NPRESW 
+  IPROACTV(NBUDGET_W, IPROC) = NPRESW
 !
-  YWORK2(3,1) = 'INIF_'
-  YWORK2(3,2) = 'ENDF_'
-  YWORK2(3,3) = 'AVEF_'
+  YWORK2(NBUDGET_W, 1) = 'INIF_'
+  YWORK2(NBUDGET_W, 2) = 'ENDF_'
+  YWORK2(NBUDGET_W, 3) = 'AVEF_'
   IPROC=4
-  YWORK2(3,IPROC) = 'ASSE_'
+  YWORK2(NBUDGET_W, IPROC) = 'ASSE_'
   IPROC=IPROC+1
-  YWORK2(3,IPROC) = 'NEST_'
+  YWORK2(NBUDGET_W, IPROC) = 'NEST_'
   IPROC=IPROC+1
-  YWORK2(3,IPROC) = 'FRC_'
+  YWORK2(NBUDGET_W, IPROC) = 'FRC_'
   IPROC=IPROC+1
-  YWORK2(3,IPROC) = 'NUD_'
+  YWORK2(NBUDGET_W, IPROC) = 'NUD_'
   IPROC=IPROC+1
-  YWORK2(3,IPROC) = 'CURV_'
+  YWORK2(NBUDGET_W, IPROC) = 'CURV_'
   IPROC=IPROC+1
-  YWORK2(3,IPROC) = 'COR_'
+  YWORK2(NBUDGET_W, IPROC) = 'COR_'
   IPROC=IPROC+1
-  YWORK2(3,IPROC) = 'DIF_'
+  YWORK2(NBUDGET_W, IPROC) = 'DIF_'
   IPROC=IPROC+1
-  YWORK2(3,IPROC) = 'REL_'
+  YWORK2(NBUDGET_W, IPROC) = 'REL_'
   IPROC=IPROC+1
-  YWORK2(3,IPROC) = 'VTURB_'
+  YWORK2(NBUDGET_W, IPROC) = 'VTURB_'
   IPROC=IPROC+1
-  YWORK2(3,IPROC) = 'HTURB_'
+  YWORK2(NBUDGET_W, IPROC) = 'HTURB_'
   IPROC=IPROC+1
-  YWORK2(3,IPROC) = 'GRAV_'
+  YWORK2(NBUDGET_W, IPROC) = 'GRAV_'
   IPROC=IPROC+1
-  YWORK2(3,IPROC) = 'ADV_'
+  YWORK2(NBUDGET_W, IPROC) = 'ADV_'
   IPROC=IPROC+1
-  YWORK2(3,IPROC) = 'PRES_'
+  YWORK2(NBUDGET_W, IPROC) = 'PRES_'
 !
-  YEND_COMMENT(3) = 'BU_RW'
-  NBUPROCNBR(3) = 3
+  YEND_COMMENT(NBUDGET_W) = 'BU_RW'
+  NBUPROCNBR(NBUDGET_W) = 3
+!
+  CBUACTION(NBUDGET_W, 1) = 'IG'
+  CBUACTION(NBUDGET_W, 2) = 'CC'
+  CBUACTION(NBUDGET_W, 3) = 'ES'
 !
-  CBUACTION(3,1) = 'IG'
-  CBUACTION(3,2) = 'CC'
-  CBUACTION(3,3) = 'ES'
-!  
   DO JJ=1,3
-    CBUCOMMENT(3,JJ) = ADJUSTL( ADJUSTR( YWORK2(3,JJ) ) // &
-                                ADJUSTL( YEND_COMMENT(3) ) )
+    CBUCOMMENT(NBUDGET_W, JJ) = ADJUSTL( ADJUSTR( YWORK2(NBUDGET_W, JJ) ) // &
+                                ADJUSTL( YEND_COMMENT(NBUDGET_W) ) )
   END DO
 !
 END IF
@@ -724,318 +724,318 @@ END IF
 !                        Budget of RTH
 IF (LBU_RTH) THEN
   IPROC=4
-  IPROACTV(4,IPROC) = NASSETH 
+  IPROACTV(NBUDGET_TH, IPROC) = NASSETH
   IPROC=IPROC+1
-  IF( NMODEL>1 ) IPROACTV(4,IPROC) = NNESTTH
+  IF( NMODEL>1 ) IPROACTV(NBUDGET_TH, IPROC) = NNESTTH
   IPROC=IPROC+1
-  IF( LFORCING ) IPROACTV(4,IPROC)  = NFRCTH
+  IF( LFORCING ) IPROACTV(NBUDGET_TH, IPROC)  = NFRCTH
   IPROC=IPROC+1
-  IF( L2D_ADV_FRC ) IPROACTV(4,IPROC)  = N2DADVTH
+  IF( L2D_ADV_FRC ) IPROACTV(NBUDGET_TH, IPROC)  = N2DADVTH
   IPROC=IPROC+1
-  IF( L2D_REL_FRC ) IPROACTV(4,IPROC)  = N2DRELTH
+  IF( L2D_REL_FRC ) IPROACTV(NBUDGET_TH, IPROC)  = N2DRELTH
   IPROC=IPROC+1
-  IF( ONUDGING ) IPROACTV(4,IPROC)  = NNUDTH
+  IF( ONUDGING ) IPROACTV(NBUDGET_TH, IPROC)  = NNUDTH
   IPROC=IPROC+1
   IF ( KRR > 0 ) THEN
-    IF(.NOT.L1D) IPROACTV(4,IPROC) = NPREFTH
+    IF(.NOT.L1D) IPROACTV(NBUDGET_TH, IPROC) = NPREFTH
   ELSE
-    IPROACTV(4,IPROC) = 4
+    IPROACTV(NBUDGET_TH, IPROC) = 4
   END IF
   IPROC=IPROC+1
-  IF ( ONUMDIFTH ) IPROACTV(4,IPROC) = NDIFTH
+  IF ( ONUMDIFTH ) IPROACTV(NBUDGET_TH, IPROC) = NDIFTH
   IPROC=IPROC+1
   IF ( OHORELAX_UVWTH .OR. OVE_RELAX ) THEN   
-    IPROACTV(4,IPROC) = NRELTH
+    IPROACTV(NBUDGET_TH, IPROC) = NRELTH
   ELSE
     IF(OVE_RELAX .OR. OHORELAX_UVWTH .OR. OHORELAX_RV .OR.                 &
      OHORELAX_RC .OR. OHORELAX_RR .OR. OHORELAX_RI .OR. OHORELAX_RS .OR.   &
      OHORELAX_RG .OR. OHORELAX_RH .OR. OHORELAX_TKE .OR. ANY(OHORELAX_SV)) THEN
-      IPROACTV(4,IPROC) = 4
+      IPROACTV(NBUDGET_TH, IPROC) = 4
     ELSE
-      IPROACTV(4,IPROC) = 3
+      IPROACTV(NBUDGET_TH, IPROC) = 3
     END IF
   END IF
   IPROC=IPROC+1
-  IF ( HRAD /= 'NONE' ) IPROACTV(4,IPROC) = NRADTH
+  IF ( HRAD /= 'NONE' ) IPROACTV(NBUDGET_TH, IPROC) = NRADTH
   IPROC=IPROC+1
-  IF ( HDCONV /= 'NONE' .OR. HSCONV == 'KAFR') IPROACTV(4,IPROC) = NDCONVTH
+  IF ( HDCONV /= 'NONE' .OR. HSCONV == 'KAFR') IPROACTV(NBUDGET_TH, IPROC) = NDCONVTH
   IPROC=IPROC+1
-  IF ( HTURB /= 'NONE' ) IPROACTV(4,IPROC) = NVTURBTH
+  IF ( HTURB /= 'NONE' ) IPROACTV(NBUDGET_TH, IPROC) = NVTURBTH
   IPROC=IPROC+1
   IF ( HTURB /= 'NONE' .AND. HTURBDIM == '3DIM' ) THEN
-    IPROACTV(4,IPROC) = NHTURBTH
+    IPROACTV(NBUDGET_TH, IPROC) = NHTURBTH
   ELSE
     IF ( HTURB /= 'NONE' ) THEN
-      IPROACTV(4,IPROC) = 4
+      IPROACTV(NBUDGET_TH, IPROC) = 4
     ELSE
-      IPROACTV(4,IPROC) = 3
+      IPROACTV(NBUDGET_TH, IPROC) = 3
     END IF
   END IF 
   IPROC=IPROC+1
-  IF (HTURB /= 'NONE')     IPROACTV(4,IPROC) = NDISSHTH
+  IF (HTURB /= 'NONE')     IPROACTV(NBUDGET_TH, IPROC) = NDISSHTH
   IPROC=IPROC+1
   IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR.  (HCLOUD == 'C2R2'))) &
-          IPROACTV(4,IPROC) = NNETURTH
+          IPROACTV(NBUDGET_TH, IPROC) = NNETURTH
   IPROC=IPROC+1
-  IF ( HSCONV == 'EDKF' ) IPROACTV(4,IPROC) = NMAFLTH
+  IF ( HSCONV == 'EDKF' ) IPROACTV(NBUDGET_TH, IPROC) = NMAFLTH
   IPROC=IPROC+1
-  IPROACTV(4,IPROC) = NADVTH
+  IPROACTV(NBUDGET_TH, IPROC) = NADVTH
   IPROC=IPROC+1
-  IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2'))  IPROACTV(4,IPROC) = NNEADVTH
+  IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2'))  IPROACTV(NBUDGET_TH, IPROC) = NNEADVTH
   IPROC=IPROC+1
   IF (HCLOUD /= 'NONE' .AND. HCLOUD /= 'KHKO' .AND. HCLOUD /= 'C2R2') &
-          IPROACTV(4,IPROC) = NNEGATH
+          IPROACTV(NBUDGET_TH, IPROC) = NNEGATH
   IPROC=IPROC+1
   IF (HCLOUD == 'LIMA') THEN
-     IF (OPTSPLIT)                                           IPROACTV(4,IPROC) = NSEDITH 
+     IF (OPTSPLIT)                                           IPROACTV(NBUDGET_TH, IPROC) = NSEDITH
      IPROC=IPROC+1
-     IF (OWARM .AND. OACTI .AND. NMOD_CCN.GE.1)              IPROACTV(4,IPROC) = NHENUTH 
+     IF (OWARM .AND. OACTI .AND. NMOD_CCN.GE.1)              IPROACTV(NBUDGET_TH, IPROC) = NHENUTH
      IPROC=IPROC+1
      IF (.NOT.OPTSPLIT) THEN
-        IF (OWARM .AND. ORAIN)                               IPROACTV(4,IPROC) = NREVATH 
+        IF (OWARM .AND. ORAIN)                               IPROACTV(NBUDGET_TH, IPROC) = NREVATH
         IPROC=IPROC+1
      END IF
-     IF (OCOLD .AND. ONUCL)                                  IPROACTV(4,IPROC) = NHINDTH 
+     IF (OCOLD .AND. ONUCL)                                  IPROACTV(NBUDGET_TH, IPROC) = NHINDTH
      IPROC=IPROC+1
-     IF (OCOLD .AND. ONUCL)                                  IPROACTV(4,IPROC) = NHINCTH 
+     IF (OCOLD .AND. ONUCL)                                  IPROACTV(NBUDGET_TH, IPROC) = NHINCTH
      IPROC=IPROC+1
-     IF (OCOLD .AND. ONUCL .AND. OHHONI .AND. NMOD_CCN.GE.1) IPROACTV(4,IPROC) = NHONHTH 
+     IF (OCOLD .AND. ONUCL .AND. OHHONI .AND. NMOD_CCN.GE.1) IPROACTV(NBUDGET_TH, IPROC) = NHONHTH
      IPROC=IPROC+1
      IF (OPTSPLIT) THEN
-                                                             IPROACTV(4,IPROC) = NREVATH 
+                                                             IPROACTV(NBUDGET_TH, IPROC) = NREVATH
         IPROC=IPROC+1
      END IF
-     IF (OCOLD .AND. OWARM .AND. ONUCL)                      IPROACTV(4,IPROC) = NHONCTH 
+     IF (OCOLD .AND. OWARM .AND. ONUCL)                      IPROACTV(NBUDGET_TH, IPROC) = NHONCTH
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. ONUCL .AND. ORAIN))      IPROACTV(4,IPROC) = NHONRTH 
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. ONUCL .AND. ORAIN))      IPROACTV(NBUDGET_TH, IPROC) = NHONRTH
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OSNOW))                  IPROACTV(4,IPROC) = NDEPSTH 
+     IF (OPTSPLIT .OR. (OCOLD .AND. OSNOW))                  IPROACTV(NBUDGET_TH, IPROC) = NDEPSTH
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))      IPROACTV(4,IPROC) = NDEPGTH
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))      IPROACTV(NBUDGET_TH, IPROC) = NDEPGTH
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM))                  IPROACTV(4,IPROC) = NIMLTTH 
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM))                  IPROACTV(NBUDGET_TH, IPROC) = NIMLTTH
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM))                  IPROACTV(4,IPROC) = NBERFITH 
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM))                  IPROACTV(NBUDGET_TH, IPROC) = NBERFITH
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))      IPROACTV(4,IPROC) = NRIMTH 
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))      IPROACTV(NBUDGET_TH, IPROC) = NRIMTH
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW .AND. ORAIN))      IPROACTV(4,IPROC) = NACCTH 
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW .AND. ORAIN))      IPROACTV(NBUDGET_TH, IPROC) = NACCTH
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))      IPROACTV(4,IPROC) = NCFRZTH 
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))      IPROACTV(NBUDGET_TH, IPROC) = NCFRZTH
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))      IPROACTV(4,IPROC) = NWETGTH 
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))      IPROACTV(NBUDGET_TH, IPROC) = NWETGTH
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))      IPROACTV(4,IPROC) = NDRYGTH 
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))      IPROACTV(NBUDGET_TH, IPROC) = NDRYGTH
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))      IPROACTV(4,IPROC) = NGMLTTH
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))      IPROACTV(NBUDGET_TH, IPROC) = NGMLTTH
      IPROC=IPROC+1
-     IF (.NOT.OPTSPLIT .AND. OHAIL)                          IPROACTV(4,IPROC) = NWETHTH
+     IF (.NOT.OPTSPLIT .AND. OHAIL)                          IPROACTV(NBUDGET_TH, IPROC) = NWETHTH
      IPROC=IPROC+1
-     IF (.NOT.OPTSPLIT .AND. OHAIL)                          IPROACTV(4,IPROC) = NHMLTTH
+     IF (.NOT.OPTSPLIT .AND. OHAIL)                          IPROACTV(NBUDGET_TH, IPROC) = NHMLTTH
      IPROC=IPROC+1
-                                                             IPROACTV(4,IPROC) = NCEDSTH
+                                                             IPROACTV(NBUDGET_TH, IPROC) = NCEDSTH
      IPROC=IPROC+1
   ELSE
-    IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LADJ_BEFORE) IPROACTV(4,IPROC) = NADJUTH
+    IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LADJ_BEFORE) IPROACTV(NBUDGET_TH, IPROC) = NADJUTH
     IPROC=IPROC+1
     IF (HCLOUD(1:3) == 'ICE' .OR. (HCLOUD == 'C2R2' .AND. (.NOT. LSUPSAT)) &
           .OR. ( HCLOUD == 'KHKO' .AND. (.NOT. LSUPSAT)) ) &
-      IPROACTV(4,IPROC) = NHENUTH 
+      IPROACTV(NBUDGET_TH, IPROC) = NHENUTH
       IPROC=IPROC+1
-      IF (HCLOUD(1:3) == 'ICE') IPROACTV(4,IPROC) = NHONTH 
+      IF (HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_TH, IPROC) = NHONTH
       IPROC=IPROC+1
-      IF (HCLOUD(1:3) == 'ICE') IPROACTV(4,IPROC) = NSFRTH 
+      IF (HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_TH, IPROC) = NSFRTH
       IPROC=IPROC+1
-      IF (HCLOUD(1:3) == 'ICE') IPROACTV(4,IPROC) = NDEPSTH 
+      IF (HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_TH, IPROC) = NDEPSTH
       IPROC=IPROC+1
-      IF (HCLOUD(1:3) == 'ICE') IPROACTV(4,IPROC) = NDEPGTH 
+      IF (HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_TH, IPROC) = NDEPGTH
       IPROC=IPROC+1
       IF (((HCLOUD(1:3) == 'ICE') .AND. LWARM) .OR. ((HCLOUD == 'C2R2' &
          .OR. HCLOUD == 'KHKO') .AND. LRAIN) .OR. HCLOUD(1:3) == 'KES')             &
-         IPROACTV(4,IPROC) = NREVATH 
+         IPROACTV(NBUDGET_TH, IPROC) = NREVATH
       IPROC=IPROC+1
-      IF (HCLOUD(1:3) == 'ICE') IPROACTV(4,IPROC) = NRIMTH 
+      IF (HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_TH, IPROC) = NRIMTH
       IPROC=IPROC+1
-      IF (HCLOUD(1:3) == 'ICE') IPROACTV(4,IPROC) = NACCTH 
+      IF (HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_TH, IPROC) = NACCTH
       IPROC=IPROC+1
-      IF (HCLOUD(1:3) == 'ICE') IPROACTV(4,IPROC) = NCFRZTH 
+      IF (HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_TH, IPROC) = NCFRZTH
       IPROC=IPROC+1
-      IF (HCLOUD(1:3) == 'ICE') IPROACTV(4,IPROC) = NWETGTH 
+      IF (HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_TH, IPROC) = NWETGTH
       IPROC=IPROC+1
-      IF (HCLOUD(1:3) == 'ICE') IPROACTV(4,IPROC) = NDRYGTH 
+      IF (HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_TH, IPROC) = NDRYGTH
       IPROC=IPROC+1
-      IF (HCLOUD(1:3) == 'ICE') IPROACTV(4,IPROC) = NGMLTTH
+      IF (HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_TH, IPROC) = NGMLTTH
       IPROC=IPROC+1
-      IF (HCLOUD == 'ICE4') IPROACTV(4,IPROC) = NWETHTH
+      IF (HCLOUD == 'ICE4') IPROACTV(NBUDGET_TH, IPROC) = NWETHTH
       IPROC=IPROC+1
-      IF (HCLOUD == 'ICE4'.AND. LRED) IPROACTV(4,IPROC) = NDRYHTH
+      IF (HCLOUD == 'ICE4'.AND. LRED) IPROACTV(NBUDGET_TH, IPROC) = NDRYHTH
       IPROC=IPROC+1
-      IF (HCLOUD == 'ICE4') IPROACTV(4,IPROC) = NHMLTTH
+      IF (HCLOUD == 'ICE4') IPROACTV(NBUDGET_TH, IPROC) = NHMLTTH
       IPROC=IPROC+1
-      IF (HCLOUD(1:3) == 'ICE') IPROACTV(4,IPROC) = NIMLTTH 
+      IF (HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_TH, IPROC) = NIMLTTH
       IPROC=IPROC+1
-      IF (HCLOUD(1:3) == 'ICE') IPROACTV(4,IPROC) = NBERFITH 
+      IF (HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_TH, IPROC) = NBERFITH
       IPROC=IPROC+1
-      IF (HCLOUD(1:3) == 'ICE' .AND. LRED) IPROACTV(4,IPROC) = NCORRTH
+      IF (HCLOUD(1:3) == 'ICE' .AND. LRED) IPROACTV(NBUDGET_TH, IPROC) = NCORRTH
       IPROC=IPROC+1
       IF (HCLOUD(1:3) == 'ICE' .AND. .NOT. LRED .OR. (LRED .AND. LADJ_AFTER)) &
-          IPROACTV(4,IPROC) = NCDEPITH 
+          IPROACTV(NBUDGET_TH, IPROC) = NCDEPITH
       IPROC=IPROC+1
       IF (HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO' .OR. HCLOUD(1:3) == 'KES' .OR.   &
-      HCLOUD == 'REVE')   IPROACTV(4,IPROC) = NCONDTH                     
+      HCLOUD == 'REVE')   IPROACTV(NBUDGET_TH, IPROC) = NCONDTH
       IPROC=IPROC+1
       IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2'))&
-          IPROACTV(4,IPROC) = NNECONTH
+          IPROACTV(NBUDGET_TH, IPROC) = NNECONTH
     END IF
 !
-  YWORK2(4,1) = 'INIF_'
-  YWORK2(4,2) = 'ENDF_'
-  YWORK2(4,3) = 'AVEF_'
+  YWORK2(NBUDGET_TH, 1) = 'INIF_'
+  YWORK2(NBUDGET_TH, 2) = 'ENDF_'
+  YWORK2(NBUDGET_TH, 3) = 'AVEF_'
   IPROC=4
-  YWORK2(4,IPROC) = 'ASSE_'
+  YWORK2(NBUDGET_TH, IPROC) = 'ASSE_'
   IPROC=IPROC+1
-  YWORK2(4,IPROC) = 'NEST_'
+  YWORK2(NBUDGET_TH, IPROC) = 'NEST_'
   IPROC=IPROC+1
-  YWORK2(4,IPROC) = 'FRC_'
+  YWORK2(NBUDGET_TH, IPROC) = 'FRC_'
   IPROC=IPROC+1
-  YWORK2(4,IPROC) = '2DADV_'
+  YWORK2(NBUDGET_TH, IPROC) = '2DADV_'
   IPROC=IPROC+1
-  YWORK2(4,IPROC) = '2DREL_'
+  YWORK2(NBUDGET_TH, IPROC) = '2DREL_'
   IPROC=IPROC+1
-  YWORK2(4,IPROC) = 'NUD_'
+  YWORK2(NBUDGET_TH, IPROC) = 'NUD_'
   IPROC=IPROC+1
-  YWORK2(4,IPROC) = 'PREF_'
+  YWORK2(NBUDGET_TH, IPROC) = 'PREF_'
   IPROC=IPROC+1
-  YWORK2(4,IPROC) = 'DIF_'
+  YWORK2(NBUDGET_TH, IPROC) = 'DIF_'
   IPROC=IPROC+1
-  YWORK2(4,IPROC) = 'REL_'
+  YWORK2(NBUDGET_TH, IPROC) = 'REL_'
   IPROC=IPROC+1
-  YWORK2(4,IPROC) = 'RAD_'
+  YWORK2(NBUDGET_TH, IPROC) = 'RAD_'
   IPROC=IPROC+1
-  YWORK2(4,IPROC) = 'DCONV_'
+  YWORK2(NBUDGET_TH, IPROC) = 'DCONV_'
   IPROC=IPROC+1
-  YWORK2(4,IPROC) = 'VTURB_'
+  YWORK2(NBUDGET_TH, IPROC) = 'VTURB_'
   IPROC=IPROC+1
-  YWORK2(4,IPROC) = 'HTURB_'
+  YWORK2(NBUDGET_TH, IPROC) = 'HTURB_'
   IPROC=IPROC+1
-  YWORK2(4,IPROC) = 'DISSH_'
+  YWORK2(NBUDGET_TH, IPROC) = 'DISSH_'
   IPROC=IPROC+1
-  YWORK2(4,IPROC) = 'NETUR_'
+  YWORK2(NBUDGET_TH, IPROC) = 'NETUR_'
   IPROC=IPROC+1
-  YWORK2(4,IPROC) = 'MAFL_'
+  YWORK2(NBUDGET_TH, IPROC) = 'MAFL_'
   IPROC=IPROC+1
-  YWORK2(4,IPROC) = 'ADV_'
+  YWORK2(NBUDGET_TH, IPROC) = 'ADV_'
   IPROC=IPROC+1
-  YWORK2(4,IPROC) = 'NEADV_'
+  YWORK2(NBUDGET_TH, IPROC) = 'NEADV_'
   IPROC=IPROC+1
-  YWORK2(4,IPROC) = 'NEGA_'
+  YWORK2(NBUDGET_TH, IPROC) = 'NEGA_'
   IPROC=IPROC+1
 
   IF (HCLOUD == 'LIMA') THEN
-     YWORK2(4,IPROC) = 'SEDI_'
+     YWORK2(NBUDGET_TH, IPROC) = 'SEDI_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'HENU_'
+     YWORK2(NBUDGET_TH, IPROC) = 'HENU_'
      IPROC=IPROC+1
      IF (.NOT.OPTSPLIT) THEN
-        YWORK2(4,IPROC) = 'REVA_'
+        YWORK2(NBUDGET_TH, IPROC) = 'REVA_'
         IPROC=IPROC+1
      END IF
-     YWORK2(4,IPROC) = 'HIND_'
+     YWORK2(NBUDGET_TH, IPROC) = 'HIND_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'HINC_'
+     YWORK2(NBUDGET_TH, IPROC) = 'HINC_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'HONH_'
+     YWORK2(NBUDGET_TH, IPROC) = 'HONH_'
      IPROC=IPROC+1
      IF (OPTSPLIT) THEN
-        YWORK2(4,IPROC) = 'REVA_'
+        YWORK2(NBUDGET_TH, IPROC) = 'REVA_'
         IPROC=IPROC+1
      END IF
-     YWORK2(4,IPROC) = 'HONC_'
+     YWORK2(NBUDGET_TH, IPROC) = 'HONC_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'HONR_'
+     YWORK2(NBUDGET_TH, IPROC) = 'HONR_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'DEPS_'
+     YWORK2(NBUDGET_TH, IPROC) = 'DEPS_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'DEPG_'
+     YWORK2(NBUDGET_TH, IPROC) = 'DEPG_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'IMLT_'
+     YWORK2(NBUDGET_TH, IPROC) = 'IMLT_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'BERFI_'
+     YWORK2(NBUDGET_TH, IPROC) = 'BERFI_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'RIM_'
+     YWORK2(NBUDGET_TH, IPROC) = 'RIM_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'ACC_'
+     YWORK2(NBUDGET_TH, IPROC) = 'ACC_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'CFRZ_'
+     YWORK2(NBUDGET_TH, IPROC) = 'CFRZ_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'WETG_'
+     YWORK2(NBUDGET_TH, IPROC) = 'WETG_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'DRYG_'
+     YWORK2(NBUDGET_TH, IPROC) = 'DRYG_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'GMLT_'
+     YWORK2(NBUDGET_TH, IPROC) = 'GMLT_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'WETH_'
+     YWORK2(NBUDGET_TH, IPROC) = 'WETH_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'HMLT_'
+     YWORK2(NBUDGET_TH, IPROC) = 'HMLT_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'CEDS_'
+     YWORK2(NBUDGET_TH, IPROC) = 'CEDS_'
      IPROC=IPROC+1
   ELSE
-     YWORK2(4,IPROC) = 'ADJU_'
+     YWORK2(NBUDGET_TH, IPROC) = 'ADJU_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'HENU_'
+     YWORK2(NBUDGET_TH, IPROC) = 'HENU_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'HON_'
+     YWORK2(NBUDGET_TH, IPROC) = 'HON_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'SFR_'
+     YWORK2(NBUDGET_TH, IPROC) = 'SFR_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'DEPS_'
+     YWORK2(NBUDGET_TH, IPROC) = 'DEPS_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'DEPG_'
+     YWORK2(NBUDGET_TH, IPROC) = 'DEPG_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'REVA_'
+     YWORK2(NBUDGET_TH, IPROC) = 'REVA_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'RIM_'
+     YWORK2(NBUDGET_TH, IPROC) = 'RIM_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'ACC_'
+     YWORK2(NBUDGET_TH, IPROC) = 'ACC_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'CFRZ_'
+     YWORK2(NBUDGET_TH, IPROC) = 'CFRZ_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'WETG_'
+     YWORK2(NBUDGET_TH, IPROC) = 'WETG_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'DRYG_'
+     YWORK2(NBUDGET_TH, IPROC) = 'DRYG_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'GMLT_'
+     YWORK2(NBUDGET_TH, IPROC) = 'GMLT_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'WETH_'
+     YWORK2(NBUDGET_TH, IPROC) = 'WETH_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'DRYH_'
+     YWORK2(NBUDGET_TH, IPROC) = 'DRYH_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'HMLT_'
+     YWORK2(NBUDGET_TH, IPROC) = 'HMLT_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'IMLT_'
+     YWORK2(NBUDGET_TH, IPROC) = 'IMLT_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'BERFI_'
+     YWORK2(NBUDGET_TH, IPROC) = 'BERFI_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'CORR_'
+     YWORK2(NBUDGET_TH, IPROC) = 'CORR_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'CDEPI_'
+     YWORK2(NBUDGET_TH, IPROC) = 'CDEPI_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'COND_'
+     YWORK2(NBUDGET_TH, IPROC) = 'COND_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'NECON_'
+     YWORK2(NBUDGET_TH, IPROC) = 'NECON_'
   END IF
 !
-  YEND_COMMENT(4) = 'BU_RTH'
-  NBUPROCNBR(4) = 3
+  YEND_COMMENT(NBUDGET_TH) = 'BU_RTH'
+  NBUPROCNBR(NBUDGET_TH) = 3
+!
+  CBUACTION(NBUDGET_TH, 1) = 'IG'
+  CBUACTION(NBUDGET_TH, 2) = 'CC'
+  CBUACTION(NBUDGET_TH, 3) = 'ES'
 !
-  CBUACTION(4,1) = 'IG'
-  CBUACTION(4,2) = 'CC'
-  CBUACTION(4,3) = 'ES'
-!  
   DO JJ=1,3
-    CBUCOMMENT(4,JJ) = ADJUSTL( ADJUSTR( YWORK2(4,JJ) ) // &
-                                ADJUSTL( YEND_COMMENT(4) ) )
+    CBUCOMMENT(NBUDGET_TH, JJ) = ADJUSTL( ADJUSTR( YWORK2(NBUDGET_TH, JJ) ) // &
+                                 ADJUSTL( YEND_COMMENT(NBUDGET_TH) ) )
   END DO
 !
 END IF
@@ -1043,70 +1043,70 @@ END IF
 !                        Budget of RTKE
 IF (LBU_RTKE) THEN
   IPROC=4
-  IPROACTV(5,IPROC) = NASSETKE 
+  IPROACTV(NBUDGET_TKE, IPROC) = NASSETKE
   IPROC=IPROC+1
-  IF( LFORCING ) IPROACTV(5,IPROC)  = NFRCTKE
+  IF( LFORCING ) IPROACTV(NBUDGET_TKE, IPROC)  = NFRCTKE
   IPROC=IPROC+1
-  IF ( ONUMDIFTH ) IPROACTV(5,IPROC) = NDIFTKE
+  IF ( ONUMDIFTH ) IPROACTV(NBUDGET_TKE, IPROC) = NDIFTKE
   IPROC=IPROC+1
   IF ( OHORELAX_TKE ) THEN
-    IPROACTV(5,IPROC) = NRELTKE
+    IPROACTV(NBUDGET_TKE, IPROC) = NRELTKE
   ELSE
     IF(OVE_RELAX .OR. OHORELAX_UVWTH .OR. OHORELAX_RV .OR.                 &
      OHORELAX_RC .OR. OHORELAX_RR .OR. OHORELAX_RI .OR. OHORELAX_RS .OR.   &
      OHORELAX_RG .OR. OHORELAX_RH .OR. OHORELAX_TKE .OR. ANY(OHORELAX_SV)) THEN
-      IPROACTV(5,IPROC) = 4
+      IPROACTV(NBUDGET_TKE, IPROC) = 4
     ELSE
-      IPROACTV(5,IPROC) = 3
+      IPROACTV(NBUDGET_TKE, IPROC) = 3
     END IF
   END IF
   IPROC=IPROC+1
-  IF( ODRAGTREE ) IPROACTV(5,IPROC)  = NDRAGTKE
+  IF( ODRAGTREE ) IPROACTV(NBUDGET_TKE, IPROC)  = NDRAGTKE
   IPROC=IPROC+1
-  IPROACTV(5,IPROC) = NDPTKE 
+  IPROACTV(NBUDGET_TKE, IPROC) = NDPTKE
   IPROC=IPROC+1
-  IPROACTV(5,IPROC) = NTPTKE  
+  IPROACTV(NBUDGET_TKE, IPROC) = NTPTKE
   IPROC=IPROC+1
-  IPROACTV(5,IPROC) = NDISSTKE 
+  IPROACTV(NBUDGET_TKE, IPROC) = NDISSTKE
   IPROC=IPROC+1 
-  IPROACTV(5,IPROC) = NTRTKE  
+  IPROACTV(NBUDGET_TKE, IPROC) = NTRTKE
   IPROC=IPROC+1
-  IPROACTV(5,IPROC) = NADVTKE
+  IPROACTV(NBUDGET_TKE, IPROC) = NADVTKE
 !
-  YWORK2(5,1) = 'INIF_'
-  YWORK2(5,2) = 'ENDF_'
-  YWORK2(5,3) = 'AVEF_'
+  YWORK2(NBUDGET_TKE, 1) = 'INIF_'
+  YWORK2(NBUDGET_TKE, 2) = 'ENDF_'
+  YWORK2(NBUDGET_TKE, 3) = 'AVEF_'
   IPROC=4
-  YWORK2(5,IPROC) = 'ASSE_'
+  YWORK2(NBUDGET_TKE, IPROC) = 'ASSE_'
   IPROC=IPROC+1
-  YWORK2(5,IPROC) = 'FRC_'
+  YWORK2(NBUDGET_TKE, IPROC) = 'FRC_'
   IPROC=IPROC+1
-  YWORK2(5,IPROC) = 'DIF_'
+  YWORK2(NBUDGET_TKE, IPROC) = 'DIF_'
   IPROC=IPROC+1
-  YWORK2(5,IPROC) = 'REL_'
+  YWORK2(NBUDGET_TKE, IPROC) = 'REL_'
   IPROC=IPROC+1
-  YWORK2(5,IPROC) = 'DRAG_'
+  YWORK2(NBUDGET_TKE, IPROC) = 'DRAG_'
   IPROC=IPROC+1
-  YWORK2(5,IPROC) = 'DP_'
+  YWORK2(NBUDGET_TKE, IPROC) = 'DP_'
   IPROC=IPROC+1
-  YWORK2(5,IPROC) = 'TP_'
+  YWORK2(NBUDGET_TKE, IPROC) = 'TP_'
   IPROC=IPROC+1
-  YWORK2(5,IPROC) = 'DISS_'
+  YWORK2(NBUDGET_TKE, IPROC) = 'DISS_'
   IPROC=IPROC+1
-  YWORK2(5,IPROC) = 'TR_'
+  YWORK2(NBUDGET_TKE, IPROC) = 'TR_'
   IPROC=IPROC+1
-  YWORK2(5,IPROC) = 'ADV_'
+  YWORK2(NBUDGET_TKE, IPROC) = 'ADV_'
 !
-  YEND_COMMENT(5) = 'BU_RTKE'
-  NBUPROCNBR(5) = 3
+  YEND_COMMENT(NBUDGET_TKE) = 'BU_RTKE'
+  NBUPROCNBR(NBUDGET_TKE) = 3
+!
+  CBUACTION(NBUDGET_TKE, 1) = 'IG'
+  CBUACTION(NBUDGET_TKE, 2) = 'CC'
+  CBUACTION(NBUDGET_TKE, 3) = 'ES'
 !
-  CBUACTION(5,1) = 'IG'
-  CBUACTION(5,2) = 'CC'
-  CBUACTION(5,3) = 'ES'
-!  
   DO JJ=1,3
-    CBUCOMMENT(5,JJ) = ADJUSTL( ADJUSTR( YWORK2(5,JJ) ) // &
-                                ADJUSTL( YEND_COMMENT(5) ) )
+    CBUCOMMENT(NBUDGET_TKE, JJ) = ADJUSTL( ADJUSTR( YWORK2(NBUDGET_TKE, JJ) ) // &
+                                  ADJUSTL( YEND_COMMENT(NBUDGET_TKE) ) )
   END DO
 !
 END IF
@@ -1114,197 +1114,197 @@ END IF
 !                        Budget of RRV
 IF (LBU_RRV) THEN
   IPROC=4
-  IPROACTV(6,IPROC) = NASSERV
+  IPROACTV(NBUDGET_RV, IPROC) = NASSERV
   IPROC=IPROC+1 
-  IF( NMODEL>1 ) IPROACTV(6,IPROC) = NNESTRV
+  IF( NMODEL>1 ) IPROACTV(NBUDGET_RV, IPROC) = NNESTRV
   IPROC=IPROC+1
-  IF( LFORCING ) IPROACTV(6,IPROC)  = NFRCRV
+  IF( LFORCING ) IPROACTV(NBUDGET_RV, IPROC)  = NFRCRV
   IPROC=IPROC+1
-  IF( L2D_ADV_FRC ) IPROACTV(6,IPROC)  = N2DADVRV
+  IF( L2D_ADV_FRC ) IPROACTV(NBUDGET_RV, IPROC)  = N2DADVRV
   IPROC=IPROC+1
-  IF( L2D_REL_FRC ) IPROACTV(6,IPROC)  = N2DRELRV
+  IF( L2D_REL_FRC ) IPROACTV(NBUDGET_RV, IPROC)  = N2DRELRV
   IPROC=IPROC+1 
-  IF( ONUDGING ) IPROACTV(6,IPROC)  = NNUDRV
+  IF( ONUDGING ) IPROACTV(NBUDGET_RV, IPROC)  = NNUDRV
   IPROC=IPROC+1 
-  IF ( ONUMDIFTH ) IPROACTV(6,IPROC) = NDIFRV
+  IF ( ONUMDIFTH ) IPROACTV(NBUDGET_RV, IPROC) = NDIFRV
   IPROC=IPROC+1 
   IF ( OHORELAX_RV .OR. OVE_RELAX ) THEN  
-    IPROACTV(6,IPROC) = NRELRV
+    IPROACTV(NBUDGET_RV, IPROC) = NRELRV
   ELSE
     IF(OVE_RELAX .OR. OHORELAX_UVWTH .OR. OHORELAX_RV .OR.                 &
      OHORELAX_RC .OR. OHORELAX_RR .OR. OHORELAX_RI .OR. OHORELAX_RS .OR.   &
      OHORELAX_RG .OR. OHORELAX_RH .OR. OHORELAX_TKE .OR. ANY(OHORELAX_SV)) THEN
-      IPROACTV(6,IPROC) = 4
+      IPROACTV(NBUDGET_RV, IPROC) = 4
     ELSE
-      IPROACTV(6,IPROC) = 3
+      IPROACTV(NBUDGET_RV, IPROC) = 3
     END IF
   END IF
   IPROC=IPROC+1 
-  IF ( HDCONV /= 'NONE' .OR. HSCONV == 'KAFR') IPROACTV(6,IPROC) = NDCONVRV
+  IF ( HDCONV /= 'NONE' .OR. HSCONV == 'KAFR') IPROACTV(NBUDGET_RV, IPROC) = NDCONVRV
   IPROC=IPROC+1 
-  IF ( HTURB /= 'NONE' ) IPROACTV(6,IPROC) = NVTURBRV
+  IF ( HTURB /= 'NONE' ) IPROACTV(NBUDGET_RV, IPROC) = NVTURBRV
   IPROC=IPROC+1 
   IF ( HTURB /= 'NONE' .AND. HTURBDIM == '3DIM' ) THEN
-    IPROACTV(6,IPROC) = NHTURBRV
+    IPROACTV(NBUDGET_RV, IPROC) = NHTURBRV
   ELSE
     IF ( HTURB /= 'NONE' ) THEN
-      IPROACTV(6,IPROC) = 4
+      IPROACTV(NBUDGET_RV, IPROC) = 4
     ELSE
-      IPROACTV(6,IPROC) = 3
+      IPROACTV(NBUDGET_RV, IPROC) = 3
     END IF
   END IF 
   IPROC=IPROC+1 
   IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR.  (HCLOUD == 'C2R2'))) &
-   IPROACTV(6,IPROC) = NNETURRV
+   IPROACTV(NBUDGET_RV, IPROC) = NNETURRV
   IPROC=IPROC+1 
-  IF ( HSCONV == 'EDKF' ) IPROACTV(6,IPROC) = NMAFLRV
+  IF ( HSCONV == 'EDKF' ) IPROACTV(NBUDGET_RV, IPROC) = NMAFLRV
   IPROC=IPROC+1 
-  IPROACTV(6,IPROC) = NADVRV
+  IPROACTV(NBUDGET_RV, IPROC) = NADVRV
   IPROC=IPROC+1   
-  IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2'))  IPROACTV(6,IPROC) = NNEADVRV
+  IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2'))  IPROACTV(NBUDGET_RV, IPROC) = NNEADVRV
   IPROC=IPROC+1 
   IF (HCLOUD /= 'NONE' .AND. HCLOUD /= 'KHKO' .AND. HCLOUD /= 'C2R2') &
-     IPROACTV(6,IPROC) = NNEGARV
+     IPROACTV(NBUDGET_RV, IPROC) = NNEGARV
   IPROC=IPROC+1   
 
   IF (HCLOUD == 'LIMA') THEN
-     IF (OWARM .AND. OACTI .AND. NMOD_CCN.GE.1)              IPROACTV(6,IPROC) = NHENURV 
+     IF (OWARM .AND. OACTI .AND. NMOD_CCN.GE.1)              IPROACTV(NBUDGET_RV, IPROC) = NHENURV
      IPROC=IPROC+1
      IF (.NOT.OPTSPLIT) THEN
-        IF (OWARM .AND. ORAIN)                               IPROACTV(6,IPROC) = NREVARV 
+        IF (OWARM .AND. ORAIN)                               IPROACTV(NBUDGET_RV, IPROC) = NREVARV
         IPROC=IPROC+1
      END IF
-     IF (OCOLD .AND. ONUCL)                                  IPROACTV(6,IPROC) = NHINDRV 
+     IF (OCOLD .AND. ONUCL)                                  IPROACTV(NBUDGET_RV, IPROC) = NHINDRV
      IPROC=IPROC+1
-     IF (OCOLD .AND. ONUCL .AND. OHHONI .AND. NMOD_CCN.GE.1) IPROACTV(6,IPROC) = NHONHRV 
+     IF (OCOLD .AND. ONUCL .AND. OHHONI .AND. NMOD_CCN.GE.1) IPROACTV(NBUDGET_RV, IPROC) = NHONHRV
      IPROC=IPROC+1
      IF (OPTSPLIT) THEN
-                                                             IPROACTV(6,IPROC) = NREVARV 
+                                                             IPROACTV(NBUDGET_RV, IPROC) = NREVARV
         IPROC=IPROC+1
      END IF
-     IF (OPTSPLIT .OR. (OCOLD .AND. OSNOW))                  IPROACTV(6,IPROC) = NDEPSRV 
+     IF (OPTSPLIT .OR. (OCOLD .AND. OSNOW))                  IPROACTV(NBUDGET_RV, IPROC) = NDEPSRV
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))      IPROACTV(6,IPROC) = NDEPGRV
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))      IPROACTV(NBUDGET_RV, IPROC) = NDEPGRV
      IPROC=IPROC+1
-                                                             IPROACTV(6,IPROC) = NCEDSRV
+                                                             IPROACTV(NBUDGET_RV, IPROC) = NCEDSRV
      IPROC=IPROC+1
 
   ELSE
   IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LADJ_BEFORE) &
-          IPROACTV(6,IPROC) = NADJURV
+          IPROACTV(NBUDGET_RV, IPROC) = NADJURV
   IPROC=IPROC+1
   IF ((HCLOUD == 'C2R2'  .AND. (.NOT. LSUPSAT)) &
           .OR. ( HCLOUD == 'KHKO' .AND. (.NOT. LSUPSAT)) &
           .OR. HCLOUD(1:3) == 'ICE')  &
-        IPROACTV(6,IPROC) = NHENURV
+        IPROACTV(NBUDGET_RV, IPROC) = NHENURV
   IPROC=IPROC+1
-  IF (HCLOUD(1:3) == 'ICE') IPROACTV(6,IPROC) = NDEPSRV 
+  IF (HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RV, IPROC) = NDEPSRV
   IPROC=IPROC+1
-  IF (HCLOUD(1:3) == 'ICE') IPROACTV(6,IPROC) = NDEPGRV 
+  IF (HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RV, IPROC) = NDEPGRV
   IPROC=IPROC+1
   IF (HCLOUD(1:3) == 'KES' .OR. ((HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO') .AND. LRAIN) .OR. &
-      ((HCLOUD(1:3) == 'ICE') .AND. LWARM)) IPROACTV(6,IPROC) = NREVARV 
+      ((HCLOUD(1:3) == 'ICE') .AND. LWARM)) IPROACTV(NBUDGET_RV, IPROC) = NREVARV
   IPROC=IPROC+1
   IF (HCLOUD(1:3) == 'KES'.OR. HCLOUD == 'REVE' .OR. &
-      HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO' ) IPROACTV(6,IPROC) = NCONDRV
+      HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO' ) IPROACTV(NBUDGET_RV, IPROC) = NCONDRV
   IPROC=IPROC+1
-  IF (HCLOUD(1:3) == 'ICE' .AND. LRED) IPROACTV(6,IPROC) = NCORRRV
+  IF (HCLOUD(1:3) == 'ICE' .AND. LRED) IPROACTV(NBUDGET_RV, IPROC) = NCORRRV
   IPROC=IPROC+1
   IF (HCLOUD(1:3) == 'ICE' .AND. (.NOT. LRED .OR. (LRED .AND. LADJ_AFTER) )) &
-          IPROACTV(6,IPROC) = NCDEPIRV 
+          IPROACTV(NBUDGET_RV, IPROC) = NCDEPIRV
   IPROC=IPROC+1
   IF ( (HCLOUD == 'KHKO' )  .OR.  (HCLOUD == 'C2R2')) &
-          IPROACTV(6,IPROC) = NNECONRV
-  IPROC=IPROC+1   
+          IPROACTV(NBUDGET_RV, IPROC) = NNECONRV
+  IPROC=IPROC+1
 END IF
 
 !
-  YWORK2(6,1) = 'INIF_'
-  YWORK2(6,2) = 'ENDF_'
-  YWORK2(6,3) = 'AVEF_'
+  YWORK2(NBUDGET_RV, 1) = 'INIF_'
+  YWORK2(NBUDGET_RV, 2) = 'ENDF_'
+  YWORK2(NBUDGET_RV, 3) = 'AVEF_'
   IPROC=4
-  YWORK2(6,IPROC) = 'ASSE_'
+  YWORK2(NBUDGET_RV, IPROC) = 'ASSE_'
   IPROC=IPROC+1
-  YWORK2(6,IPROC) = 'NEST_'
+  YWORK2(NBUDGET_RV, IPROC) = 'NEST_'
   IPROC=IPROC+1
-  YWORK2(6,IPROC) = 'FRC_'
+  YWORK2(NBUDGET_RV, IPROC) = 'FRC_'
   IPROC=IPROC+1
-  YWORK2(6,IPROC) = '2DADV_'
+  YWORK2(NBUDGET_RV, IPROC) = '2DADV_'
   IPROC=IPROC+1
-  YWORK2(6,IPROC) = '2DREL_'
+  YWORK2(NBUDGET_RV, IPROC) = '2DREL_'
   IPROC=IPROC+1
-  YWORK2(6,IPROC) = 'NUD_'
+  YWORK2(NBUDGET_RV, IPROC) = 'NUD_'
   IPROC=IPROC+1
-  YWORK2(6,IPROC) = 'DIF_'
+  YWORK2(NBUDGET_RV, IPROC) = 'DIF_'
   IPROC=IPROC+1
-  YWORK2(6,IPROC) = 'REL_'
+  YWORK2(NBUDGET_RV, IPROC) = 'REL_'
   IPROC=IPROC+1
-  YWORK2(6,IPROC) = 'DCONV_'
+  YWORK2(NBUDGET_RV, IPROC) = 'DCONV_'
   IPROC=IPROC+1
-  YWORK2(6,IPROC) = 'VTURB_'
+  YWORK2(NBUDGET_RV, IPROC) = 'VTURB_'
   IPROC=IPROC+1
-  YWORK2(6,IPROC) = 'HTURB_'
+  YWORK2(NBUDGET_RV, IPROC) = 'HTURB_'
   IPROC=IPROC+1
-  YWORK2(6,IPROC) = 'NETUR_'
+  YWORK2(NBUDGET_RV, IPROC) = 'NETUR_'
   IPROC=IPROC+1
-  YWORK2(6,IPROC) = 'MAFL_'
+  YWORK2(NBUDGET_RV, IPROC) = 'MAFL_'
   IPROC=IPROC+1
-  YWORK2(6,IPROC) = 'ADV_'
+  YWORK2(NBUDGET_RV, IPROC) = 'ADV_'
   IPROC=IPROC+1
-  YWORK2(6,IPROC) = 'NEADV_'
+  YWORK2(NBUDGET_RV, IPROC) = 'NEADV_'
   IPROC=IPROC+1
-  YWORK2(6,IPROC) = 'NEGA_'
+  YWORK2(NBUDGET_RV, IPROC) = 'NEGA_'
   IPROC=IPROC+1
 IF (HCLOUD == 'LIMA') THEN
- YWORK2(6,IPROC) = 'HENU_'
+ YWORK2(NBUDGET_RV, IPROC) = 'HENU_'
   IPROC=IPROC+1
   IF (.NOT.OPTSPLIT) THEN
-     YWORK2(6,IPROC) = 'REVA_'
+     YWORK2(NBUDGET_RV, IPROC) = 'REVA_'
      IPROC=IPROC+1
   END IF
-  YWORK2(6,IPROC) = 'HIND_'
+  YWORK2(NBUDGET_RV, IPROC) = 'HIND_'
   IPROC=IPROC+1
-  YWORK2(6,IPROC) = 'HONH_'
+  YWORK2(NBUDGET_RV, IPROC) = 'HONH_'
   IPROC=IPROC+1
   IF (OPTSPLIT) THEN
-     YWORK2(6,IPROC) = 'REVA_'
+     YWORK2(NBUDGET_RV, IPROC) = 'REVA_'
      IPROC=IPROC+1
   END IF
-  YWORK2(6,IPROC) = 'DEPS_'
+  YWORK2(NBUDGET_RV, IPROC) = 'DEPS_'
   IPROC=IPROC+1
-  YWORK2(6,IPROC) = 'DEPG_'
+  YWORK2(NBUDGET_RV, IPROC) = 'DEPG_'
   IPROC=IPROC+1
-  YWORK2(6,IPROC) = 'CEDS_'
+  YWORK2(NBUDGET_RV, IPROC) = 'CEDS_'
 ELSE
-  YWORK2(6,IPROC) = 'ADJU_'
+  YWORK2(NBUDGET_RV, IPROC) = 'ADJU_'
   IPROC=IPROC+1
-  YWORK2(6,IPROC) = 'HENU_'
+  YWORK2(NBUDGET_RV, IPROC) = 'HENU_'
   IPROC=IPROC+1
-  YWORK2(6,IPROC) = 'DEPS_'
+  YWORK2(NBUDGET_RV, IPROC) = 'DEPS_'
   IPROC=IPROC+1
-  YWORK2(6,IPROC) = 'DEPG_'
+  YWORK2(NBUDGET_RV, IPROC) = 'DEPG_'
   IPROC=IPROC+1
-  YWORK2(6,IPROC) = 'REVA_'
+  YWORK2(NBUDGET_RV, IPROC) = 'REVA_'
   IPROC=IPROC+1
-  YWORK2(6,IPROC) = 'COND_'
+  YWORK2(NBUDGET_RV, IPROC) = 'COND_'
   IPROC=IPROC+1
-  YWORK2(6,IPROC) = 'CORR_'
+  YWORK2(NBUDGET_RV, IPROC) = 'CORR_'
   IPROC=IPROC+1
-  YWORK2(6,IPROC) = 'CDEPI_'
+  YWORK2(NBUDGET_RV, IPROC) = 'CDEPI_'
   IPROC=IPROC+1
-  YWORK2(6,IPROC) = 'NECON_'
+  YWORK2(NBUDGET_RV, IPROC) = 'NECON_'
 END IF
 !
-  YEND_COMMENT(6) = 'BU_RRV'
-  NBUPROCNBR(6) = 3
+  YEND_COMMENT(NBUDGET_RV) = 'BU_RRV'
+  NBUPROCNBR(NBUDGET_RV) = 3
+!
+  CBUACTION(NBUDGET_RV, 1) = 'IG'
+  CBUACTION(NBUDGET_RV, 2) = 'CC'
+  CBUACTION(NBUDGET_RV, 3) = 'ES'
 !
-  CBUACTION(6,1) = 'IG'
-  CBUACTION(6,2) = 'CC'
-  CBUACTION(6,3) = 'ES'
-!  
   DO JJ=1,3
-    CBUCOMMENT(6,JJ) = ADJUSTL( ADJUSTR( YWORK2(6,JJ) ) // &
-                                ADJUSTL( YEND_COMMENT(6) ) )
+    CBUCOMMENT(NBUDGET_RV, JJ) = ADJUSTL( ADJUSTR( YWORK2(NBUDGET_RV, JJ) ) // &
+                                 ADJUSTL( YEND_COMMENT(NBUDGET_RV) ) )
   END DO
 !
 END IF
@@ -1312,289 +1312,289 @@ END IF
 !                        Budget of RRC
 IF (LBU_RRC) THEN
   IPROC=4
-  IPROACTV(7,IPROC) = NASSERC 
+  IPROACTV(NBUDGET_RC, IPROC) = NASSERC
   IPROC=IPROC+1
-  IF( NMODEL>1 ) IPROACTV(7,IPROC) = NNESTRC
+  IF( NMODEL>1 ) IPROACTV(NBUDGET_RC, IPROC) = NNESTRC
   IPROC=IPROC+1
-  IF( LFORCING ) IPROACTV(7,IPROC)  = NFRCRC
+  IF( LFORCING ) IPROACTV(NBUDGET_RC, IPROC)  = NFRCRC
   IPROC=IPROC+1
-  IF ( ONUMDIFTH ) IPROACTV(7,IPROC) = NDIFRC
+  IF ( ONUMDIFTH ) IPROACTV(NBUDGET_RC, IPROC) = NDIFRC
   IPROC=IPROC+1
   IF ( OHORELAX_RC ) THEN
-    IPROACTV(7,IPROC) = NRELRC
+    IPROACTV(NBUDGET_RC, IPROC) = NRELRC
   ELSE
     IF(OVE_RELAX .OR. OHORELAX_UVWTH .OR. OHORELAX_RV .OR.                 &
      OHORELAX_RC .OR. OHORELAX_RR .OR. OHORELAX_RI .OR. OHORELAX_RS .OR.   &
      OHORELAX_RG .OR. OHORELAX_RH .OR. OHORELAX_TKE .OR. ANY(OHORELAX_SV)) THEN
-      IPROACTV(7,IPROC) = 4
+      IPROACTV(NBUDGET_RC, IPROC) = 4
     ELSE
-      IPROACTV(7,IPROC) = 3
+      IPROACTV(NBUDGET_RC, IPROC) = 3
     END IF
   END IF
   IPROC=IPROC+1
-  IF( HDCONV /= 'NONE' .OR. HSCONV == 'KAFR') IPROACTV(7,IPROC)  = NDCONVRC
+  IF( HDCONV /= 'NONE' .OR. HSCONV == 'KAFR') IPROACTV(NBUDGET_RC, IPROC)  = NDCONVRC
   IPROC=IPROC+1
-  IF( ODRAGTREE .AND. ODEPOTREE ) IPROACTV(7,IPROC) = NDEPOTRRC
+  IF( ODRAGTREE .AND. ODEPOTREE ) IPROACTV(NBUDGET_RC, IPROC) = NDEPOTRRC
   IPROC=IPROC+1
-  IF ( HTURB /= 'NONE' ) IPROACTV(7,IPROC) = NVTURBRC
+  IF ( HTURB /= 'NONE' ) IPROACTV(NBUDGET_RC, IPROC) = NVTURBRC
   IPROC=IPROC+1
   IF ( HTURB /= 'NONE' .AND. HTURBDIM == '3DIM' ) THEN
-    IPROACTV(7,IPROC) = NHTURBRC
+    IPROACTV(NBUDGET_RC, IPROC) = NHTURBRC
   ELSE 
     IF ( HTURB /= 'NONE' ) THEN
-      IPROACTV(7,IPROC) = 4
+      IPROACTV(NBUDGET_RC, IPROC) = 4
     ELSE
-      IPROACTV(7,IPROC) = 3
+      IPROACTV(NBUDGET_RC, IPROC) = 3
     END IF
   END IF 
   IPROC=IPROC+1
   IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR.  (HCLOUD == 'C2R2'))) &
-      IPROACTV(7,IPROC) = NNETURRC
+      IPROACTV(NBUDGET_RC, IPROC) = NNETURRC
   IPROC=IPROC+1
-  IPROACTV(7,IPROC) = NADVRC
+  IPROACTV(NBUDGET_RC, IPROC) = NADVRC
   IPROC=IPROC+1
   IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2'))  &
-      IPROACTV(7,IPROC) = NNEADVRC
+      IPROACTV(NBUDGET_RC, IPROC) = NNEADVRC
   IPROC=IPROC+1
   IF (HCLOUD /= 'NONE' .AND. HCLOUD /= 'KHKO' .AND. HCLOUD /= 'C2R2') &
-     IPROACTV(7,IPROC)  = NNEGARC
+     IPROACTV(NBUDGET_RC, IPROC)  = NNEGARC
   IPROC=IPROC+1
 
   IF (HCLOUD == 'LIMA') THEN
-     IF (OPTSPLIT .AND. OWARM .AND. ORAIN)              IPROACTV(7,IPROC) = NCORRRC
+     IF (OPTSPLIT .AND. OWARM .AND. ORAIN)              IPROACTV(NBUDGET_RC, IPROC) = NCORRRC
      IPROC=IPROC+1
-     IF (OWARM .AND. OSEDC)                             IPROACTV(7,IPROC) = NSEDIRC
+     IF (OWARM .AND. OSEDC)                             IPROACTV(NBUDGET_RC, IPROC) = NSEDIRC
      IPROC=IPROC+1
-     IF (OWARM .AND. ODEPOC)                            IPROACTV(7,IPROC) = NDEPORC
+     IF (OWARM .AND. ODEPOC)                            IPROACTV(NBUDGET_RC, IPROC) = NDEPORC
      IPROC=IPROC+1
-     IF (OPTSPLIT .AND. OWARM .AND. ORAIN)              IPROACTV(7,IPROC) = NR2C1RC
+     IF (OPTSPLIT .AND. OWARM .AND. ORAIN)              IPROACTV(NBUDGET_RC, IPROC) = NR2C1RC
      IPROC=IPROC+1
-     IF (OWARM .AND. OACTI .AND. NMOD_CCN.GE.1)         IPROACTV(7,IPROC) = NHENURC
+     IF (OWARM .AND. OACTI .AND. NMOD_CCN.GE.1)         IPROACTV(NBUDGET_RC, IPROC) = NHENURC
      IPROC=IPROC+1
      IF (OPTSPLIT) THEN
-        IF (OCOLD .AND. ONUCL)                          IPROACTV(7,IPROC) = NHINCRC
+        IF (OCOLD .AND. ONUCL)                          IPROACTV(NBUDGET_RC, IPROC) = NHINCRC
         IPROC=IPROC+1
      END IF
-     IF (OPTSPLIT .OR. (OWARM .AND. ORAIN))             IPROACTV(7,IPROC) = NAUTORC
+     IF (OPTSPLIT .OR. (OWARM .AND. ORAIN))             IPROACTV(NBUDGET_RC, IPROC) = NAUTORC
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OWARM .AND. ORAIN))             IPROACTV(7,IPROC) = NACCRRC
+     IF (OPTSPLIT .OR. (OWARM .AND. ORAIN))             IPROACTV(NBUDGET_RC, IPROC) = NACCRRC
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OWARM .AND. ORAIN))             IPROACTV(7,IPROC) = NREVARC
+     IF (OPTSPLIT .OR. (OWARM .AND. ORAIN))             IPROACTV(NBUDGET_RC, IPROC) = NREVARC
      IPROC=IPROC+1
      IF (.NOT.OPTSPLIT) THEN
-        IF (OCOLD .AND. ONUCL)                          IPROACTV(7,IPROC) = NHINCRC
+        IF (OCOLD .AND. ONUCL)                          IPROACTV(NBUDGET_RC, IPROC) = NHINCRC
         IPROC=IPROC+1
      END IF
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. ONUCL)) IPROACTV(7,IPROC) = NHONCRC
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. ONUCL)) IPROACTV(NBUDGET_RC, IPROC) = NHONCRC
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM))             IPROACTV(7,IPROC) = NIMLTRC
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM))             IPROACTV(NBUDGET_RC, IPROC) = NIMLTRC
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM))             IPROACTV(7,IPROC) = NBERFIRC
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM))             IPROACTV(NBUDGET_RC, IPROC) = NBERFIRC
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) IPROACTV(7,IPROC) = NRIMRC
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) IPROACTV(NBUDGET_RC, IPROC) = NRIMRC
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) IPROACTV(7,IPROC) = NWETGRC
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) IPROACTV(NBUDGET_RC, IPROC) = NWETGRC
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) IPROACTV(7,IPROC) = NDRYGRC
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) IPROACTV(NBUDGET_RC, IPROC) = NDRYGRC
      IPROC=IPROC+1
-     IF (OPTSPLIT)                                      IPROACTV(7,IPROC) = NCVRCRC
+     IF (OPTSPLIT)                                      IPROACTV(NBUDGET_RC, IPROC) = NCVRCRC
      IPROC=IPROC+1
-     IF (.NOT.OPTSPLIT .AND. OHAIL)                     IPROACTV(7,IPROC) = NWETHRC
+     IF (.NOT.OPTSPLIT .AND. OHAIL)                     IPROACTV(NBUDGET_RC, IPROC) = NWETHRC
      IPROC=IPROC+1
-                                                        IPROACTV(7,IPROC) = NCEDSRC
+                                                        IPROACTV(NBUDGET_RC, IPROC) = NCEDSRC
      IPROC=IPROC+1
   ELSE
-  IF (HCLOUD(1:3) == 'KES' )            IPROACTV(7,IPROC  ) = NACCRRC
+  IF (HCLOUD(1:3) == 'KES' )            IPROACTV(NBUDGET_RC, IPROC  ) = NACCRRC
   IPROC=IPROC+1
-  IF (HCLOUD(1:3) == 'KES' )            IPROACTV(7,IPROC) = NAUTORC
+  IF (HCLOUD(1:3) == 'KES' )            IPROACTV(NBUDGET_RC, IPROC) = NAUTORC
   IPROC=IPROC+1
   IF ((HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO')  .AND. (.NOT. LSUPSAT)) &
-          IPROACTV(7,IPROC) = NHENURC
+          IPROACTV(NBUDGET_RC, IPROC) = NHENURC
   IPROC=IPROC+1
 !
   IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LADJ_BEFORE) &
-          IPROACTV(7,IPROC) = NADJURC
+          IPROACTV(NBUDGET_RC, IPROC) = NADJURC
   IPROC=IPROC+1
   IF (HCLOUD(1:3) == 'ICE' .AND. LSEDIC .AND. &
           LRED .AND. (.NOT. LSEDIM_AFTER)) &
-     IPROACTV(7,IPROC) = NSEDIRC
+     IPROACTV(NBUDGET_RC, IPROC) = NSEDIRC
   IPROC=IPROC+1
-  IF (HCLOUD(1:3) == 'ICE' ) IPROACTV(7,IPROC) = NHONRC
+  IF (HCLOUD(1:3) == 'ICE' ) IPROACTV(NBUDGET_RC, IPROC) = NHONRC
   IPROC=IPROC+1
   IF (((HCLOUD(1:3) == 'ICE' ) .AND. LWARM) .OR.  ((HCLOUD == 'C2R2' .OR. &
-        HCLOUD == 'KHKO') .AND. LRAIN)) IPROACTV(7,IPROC) = NAUTORC
+        HCLOUD == 'KHKO') .AND. LRAIN)) IPROACTV(NBUDGET_RC, IPROC) = NAUTORC
   IPROC=IPROC+1
   !modif
   IF (((HCLOUD(1:3) == 'ICE' ) .AND. LWARM) .OR.  ((HCLOUD == 'C2R2' .OR. &
-        HCLOUD == 'KHKO') .AND. LRAIN)) IPROACTV(7,IPROC) = NACCRRC
+        HCLOUD == 'KHKO') .AND. LRAIN)) IPROACTV(NBUDGET_RC, IPROC) = NACCRRC
   IPROC=IPROC+1
-  IF (HCLOUD(1:3) == 'ICE') IPROACTV(7,IPROC) = NRIMRC
+  IF (HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RC, IPROC) = NRIMRC
   IPROC=IPROC+1
-  IF (HCLOUD(1:3) == 'ICE'  .AND. LRED) IPROACTV(7,IPROC) = NCMELRC
+  IF (HCLOUD(1:3) == 'ICE'  .AND. LRED) IPROACTV(NBUDGET_RC, IPROC) = NCMELRC
   IPROC=IPROC+1
-  IF (HCLOUD(1:3) == 'ICE') IPROACTV(7,IPROC) = NWETGRC
+  IF (HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RC, IPROC) = NWETGRC
   IPROC=IPROC+1
-  IF (HCLOUD(1:3) == 'ICE') IPROACTV(7,IPROC) = NDRYGRC
+  IF (HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RC, IPROC) = NDRYGRC
   IPROC=IPROC+1
-  IF (HCLOUD == 'ICE4')  IPROACTV(7,IPROC) = NWETHRC
+  IF (HCLOUD == 'ICE4')  IPROACTV(NBUDGET_RC, IPROC) = NWETHRC
   IPROC=IPROC+1
-  IF (HCLOUD == 'ICE4' .AND. LRED)  IPROACTV(7,IPROC) = NDRYHRC
+  IF (HCLOUD == 'ICE4' .AND. LRED)  IPROACTV(NBUDGET_RC, IPROC) = NDRYHRC
   IPROC=IPROC+1
-  IF (HCLOUD(1:3) == 'ICE' ) IPROACTV(7,IPROC) = NIMLTRC
+  IF (HCLOUD(1:3) == 'ICE' ) IPROACTV(NBUDGET_RC, IPROC) = NIMLTRC
   IPROC=IPROC+1
-  IF (HCLOUD(1:3) == 'ICE') IPROACTV(7,IPROC) = NBERFIRC
+  IF (HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RC, IPROC) = NBERFIRC
   IPROC=IPROC+1
-  IF (HCLOUD(1:3) == 'ICE' .AND. LRED) IPROACTV(7,IPROC) = NCORRRC
+  IF (HCLOUD(1:3) == 'ICE' .AND. LRED) IPROACTV(NBUDGET_RC, IPROC) = NCORRRC
   IPROC=IPROC+1
   IF (((HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO').AND. LSEDC) .OR.   &
      (HCLOUD(1:3) == 'ICE' .AND. LSEDIC .AND. .NOT. LRED) .OR. &
      (HCLOUD(1:3) == 'ICE' .AND. LSEDIC .AND. LRED .AND. LSEDIM_AFTER)) &
-     IPROACTV(7,IPROC) = NSEDIRC
+     IPROACTV(NBUDGET_RC, IPROC) = NSEDIRC
   IPROC=IPROC+1
   IF (((HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO').AND. LDEPOC) .OR.   &
-     (HCLOUD(1:3) == 'ICE' .AND. LDEPOSC)) IPROACTV(7,IPROC) = NDEPORC
+     (HCLOUD(1:3) == 'ICE' .AND. LDEPOSC)) IPROACTV(NBUDGET_RC, IPROC) = NDEPORC
   IPROC=IPROC+1
   IF (HCLOUD(1:3) == 'ICE' .AND. (.NOT. LRED .OR. (LRED .AND. LADJ_AFTER) )) &
-          IPROACTV(7,IPROC) = NCDEPIRC
+          IPROACTV(NBUDGET_RC, IPROC) = NCDEPIRC
   IPROC=IPROC+1
   IF (HCLOUD == 'C2R2'.OR. HCLOUD == 'KHKO' .OR. &
-      HCLOUD(1:3) == 'KES'.OR. HCLOUD == 'REVE') IPROACTV(7,IPROC) = NCONDRC
+      HCLOUD(1:3) == 'KES'.OR. HCLOUD == 'REVE') IPROACTV(NBUDGET_RC, IPROC) = NCONDRC
   IPROC=IPROC+1
   IF ( (HCLOUD == 'KHKO' )  .OR.  (HCLOUD == 'C2R2')) &
-     IPROACTV(7,IPROC) = NNECONRC
+     IPROACTV(NBUDGET_RC, IPROC) = NNECONRC
   IPROC=IPROC+1
   END IF
 
 !
-  YWORK2(7,1) = 'INIF_'
-  YWORK2(7,2) = 'ENDF_'
-  YWORK2(7,3) = 'AVEF_'
+  YWORK2(NBUDGET_RC, 1) = 'INIF_'
+  YWORK2(NBUDGET_RC, 2) = 'ENDF_'
+  YWORK2(NBUDGET_RC, 3) = 'AVEF_'
   IPROC=4
-  YWORK2(7,IPROC) = 'ASSE_'
+  YWORK2(NBUDGET_RC, IPROC) = 'ASSE_'
   IPROC=IPROC+1
-  YWORK2(7,IPROC) = 'NEST_'
+  YWORK2(NBUDGET_RC, IPROC) = 'NEST_'
   IPROC=IPROC+1
-  YWORK2(7,IPROC) = 'FRC_'
+  YWORK2(NBUDGET_RC, IPROC) = 'FRC_'
   IPROC=IPROC+1
-  YWORK2(7,IPROC) = 'DIF_'
+  YWORK2(NBUDGET_RC, IPROC) = 'DIF_'
   IPROC=IPROC+1
-  YWORK2(7,IPROC) = 'REL_'
+  YWORK2(NBUDGET_RC, IPROC) = 'REL_'
   IPROC=IPROC+1
-  YWORK2(7,IPROC) = 'DCONV_'
+  YWORK2(NBUDGET_RC, IPROC) = 'DCONV_'
   IPROC=IPROC+1
-  YWORK2(7,IPROC) = 'DEPOTR'
+  YWORK2(NBUDGET_RC, IPROC) = 'DEPOTR'
   IPROC=IPROC+1
-  YWORK2(7,IPROC) = 'VTURB_'
+  YWORK2(NBUDGET_RC, IPROC) = 'VTURB_'
   IPROC=IPROC+1
-  YWORK2(7,IPROC) = 'HTURB_'
+  YWORK2(NBUDGET_RC, IPROC) = 'HTURB_'
   IPROC=IPROC+1
-  YWORK2(7,IPROC) = 'NETUR_'
+  YWORK2(NBUDGET_RC, IPROC) = 'NETUR_'
   IPROC=IPROC+1
-  YWORK2(7,IPROC) = 'ADV_'
+  YWORK2(NBUDGET_RC, IPROC) = 'ADV_'
   IPROC=IPROC+1
-  YWORK2(7,IPROC) = 'NEADV_'
+  YWORK2(NBUDGET_RC, IPROC) = 'NEADV_'
   IPROC=IPROC+1
-  YWORK2(7,IPROC) = 'NEGA_'
+  YWORK2(NBUDGET_RC, IPROC) = 'NEGA_'
   IPROC=IPROC+1
 
   IF (HCLOUD == 'LIMA') THEN
-     YWORK2(7,IPROC) = 'CORR_'
+     YWORK2(NBUDGET_RC, IPROC) = 'CORR_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'SEDI_'
+     YWORK2(NBUDGET_RC, IPROC) = 'SEDI_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'DEPO_'
+     YWORK2(NBUDGET_RC, IPROC) = 'DEPO_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'R2C1_'
+     YWORK2(NBUDGET_RC, IPROC) = 'R2C1_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'HENU_'
+     YWORK2(NBUDGET_RC, IPROC) = 'HENU_'
      IPROC=IPROC+1
      IF (OPTSPLIT) THEN
-        YWORK2(7,IPROC) = 'HINC_'
+        YWORK2(NBUDGET_RC, IPROC) = 'HINC_'
         IPROC=IPROC+1
      END IF
-     YWORK2(7,IPROC) = 'AUTO_'
+     YWORK2(NBUDGET_RC, IPROC) = 'AUTO_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'ACCR_'
+     YWORK2(NBUDGET_RC, IPROC) = 'ACCR_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'REVA_'
+     YWORK2(NBUDGET_RC, IPROC) = 'REVA_'
      IPROC=IPROC+1
      IF (.NOT.OPTSPLIT) THEN
-        YWORK2(7,IPROC) = 'HINC_'
+        YWORK2(NBUDGET_RC, IPROC) = 'HINC_'
         IPROC=IPROC+1
      END IF
-     YWORK2(7,IPROC) = 'HONC_'
+     YWORK2(NBUDGET_RC, IPROC) = 'HONC_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'IMLT_'
+     YWORK2(NBUDGET_RC, IPROC) = 'IMLT_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'BERFI_'
+     YWORK2(NBUDGET_RC, IPROC) = 'BERFI_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'RIM_'
+     YWORK2(NBUDGET_RC, IPROC) = 'RIM_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'WETG_'
+     YWORK2(NBUDGET_RC, IPROC) = 'WETG_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'DRYG_'
+     YWORK2(NBUDGET_RC, IPROC) = 'DRYG_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'CVRC_'
+     YWORK2(NBUDGET_RC, IPROC) = 'CVRC_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'WETH_'
+     YWORK2(NBUDGET_RC, IPROC) = 'WETH_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'CEDS_'
+     YWORK2(NBUDGET_RC, IPROC) = 'CEDS_'
   ELSE
-     YWORK2(7,IPROC) = 'ACCR_'
+     YWORK2(NBUDGET_RC, IPROC) = 'ACCR_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'AUTO_'
+     YWORK2(NBUDGET_RC, IPROC) = 'AUTO_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'HENU_'
+     YWORK2(NBUDGET_RC, IPROC) = 'HENU_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'ADJU_'
+     YWORK2(NBUDGET_RC, IPROC) = 'ADJU_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'SEDI_'
+     YWORK2(NBUDGET_RC, IPROC) = 'SEDI_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'HON_'
+     YWORK2(NBUDGET_RC, IPROC) = 'HON_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'AUTO_'
+     YWORK2(NBUDGET_RC, IPROC) = 'AUTO_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'ACCR_'
+     YWORK2(NBUDGET_RC, IPROC) = 'ACCR_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'RIM_'
+     YWORK2(NBUDGET_RC, IPROC) = 'RIM_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'CMEL_'
+     YWORK2(NBUDGET_RC, IPROC) = 'CMEL_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'WETG_'
+     YWORK2(NBUDGET_RC, IPROC) = 'WETG_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'DRYG_'
+     YWORK2(NBUDGET_RC, IPROC) = 'DRYG_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'WETH_'
+     YWORK2(NBUDGET_RC, IPROC) = 'WETH_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'DRYH_'
+     YWORK2(NBUDGET_RC, IPROC) = 'DRYH_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'IMLT_'
+     YWORK2(NBUDGET_RC, IPROC) = 'IMLT_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'BERFI_'
+     YWORK2(NBUDGET_RC, IPROC) = 'BERFI_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'CORR_'
+     YWORK2(NBUDGET_RC, IPROC) = 'CORR_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'SEDI_'
+     YWORK2(NBUDGET_RC, IPROC) = 'SEDI_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'DEPO_'
+     YWORK2(NBUDGET_RC, IPROC) = 'DEPO_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'CDEPI_'
+     YWORK2(NBUDGET_RC, IPROC) = 'CDEPI_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'COND_'
+     YWORK2(NBUDGET_RC, IPROC) = 'COND_'
      IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'NECON_'
+     YWORK2(NBUDGET_RC, IPROC) = 'NECON_'
   END IF
 !
-  YEND_COMMENT(7) = 'BU_RRC'
-  NBUPROCNBR(7) = 3
+  YEND_COMMENT(NBUDGET_RC) = 'BU_RRC'
+  NBUPROCNBR(NBUDGET_RC) = 3
+!
+  CBUACTION(NBUDGET_RC, 1) = 'IG'
+  CBUACTION(NBUDGET_RC, 2) = 'CC'
+  CBUACTION(NBUDGET_RC, 3) = 'ES'
 !
-  CBUACTION(7,1) = 'IG'
-  CBUACTION(7,2) = 'CC'
-  CBUACTION(7,3) = 'ES'
-!  
   DO JJ=1,3
-    CBUCOMMENT(7,JJ) = ADJUSTL( ADJUSTR( YWORK2(7,JJ) ) // &
-                                ADJUSTL( YEND_COMMENT(7) ) )
+    CBUCOMMENT(NBUDGET_RC, JJ) = ADJUSTL( ADJUSTR( YWORK2(NBUDGET_RC, JJ) ) // &
+                                 ADJUSTL( YEND_COMMENT(NBUDGET_RC) ) )
   END DO
 !
 END IF
@@ -1602,226 +1602,226 @@ END IF
 !                        Budget of RRR
 IF (LBU_RRR) THEN
   IPROC=4
-  IPROACTV(8,IPROC) = NASSERR 
+  IPROACTV(NBUDGET_RR, IPROC) = NASSERR
   IPROC=IPROC+1
-  IF( NMODEL>1 ) IPROACTV(8,IPROC) = NNESTRR
+  IF( NMODEL>1 ) IPROACTV(NBUDGET_RR, IPROC) = NNESTRR
   IPROC=IPROC+1
-  IF( LFORCING ) IPROACTV(8,IPROC)  = NFRCRR
+  IF( LFORCING ) IPROACTV(NBUDGET_RR, IPROC)  = NFRCRR
   IPROC=IPROC+1
-  IF ( ONUMDIFTH ) IPROACTV(8,IPROC) = NDIFRR
+  IF ( ONUMDIFTH ) IPROACTV(NBUDGET_RR, IPROC) = NDIFRR
   IPROC=IPROC+1
   IF ( OHORELAX_RR ) THEN
-    IPROACTV(8,IPROC) = NRELRR
+    IPROACTV(NBUDGET_RR, IPROC) = NRELRR
   ELSE
     IF(OVE_RELAX .OR. OHORELAX_UVWTH .OR. OHORELAX_RV .OR.                 &
      OHORELAX_RC .OR. OHORELAX_RR .OR. OHORELAX_RI .OR. OHORELAX_RS .OR.   &
      OHORELAX_RG .OR. OHORELAX_RH .OR. OHORELAX_TKE .OR. ANY(OHORELAX_SV)) THEN
-      IPROACTV(8,IPROC) = 4
+      IPROACTV(NBUDGET_RR, IPROC) = 4
     ELSE
-      IPROACTV(8,IPROC) = 3
+      IPROACTV(NBUDGET_RR, IPROC) = 3
     END IF
   END IF
   IPROC=IPROC+1
-  IPROACTV(8,IPROC) = NADVRR
+  IPROACTV(NBUDGET_RR, IPROC) = NADVRR
   IPROC=IPROC+1
-  IF ( HCLOUD /= 'NONE' ) IPROACTV(8,IPROC) = NNEGARR
+  IF ( HCLOUD /= 'NONE' ) IPROACTV(NBUDGET_RR, IPROC) = NNEGARR
   IPROC=IPROC+1
 
   IF (HCLOUD == 'LIMA') THEN
-     IF (OPTSPLIT .AND. OWARM .AND. ORAIN)              IPROACTV(8,IPROC) = NCORRRR
+     IF (OPTSPLIT .AND. OWARM .AND. ORAIN)              IPROACTV(NBUDGET_RR, IPROC) = NCORRRR
      IPROC=IPROC+1
-     IF (OWARM .AND. ORAIN)                             IPROACTV(8,IPROC) = NSEDIRR 
+     IF (OWARM .AND. ORAIN)                             IPROACTV(NBUDGET_RR, IPROC) = NSEDIRR
      IPROC=IPROC+1
-     IF (OPTSPLIT .AND. OWARM .AND. ORAIN)              IPROACTV(8,IPROC) = NR2C1RR
+     IF (OPTSPLIT .AND. OWARM .AND. ORAIN)              IPROACTV(NBUDGET_RR, IPROC) = NR2C1RR
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OWARM .AND. ORAIN))             IPROACTV(8,IPROC) = NAUTORR
+     IF (OPTSPLIT .OR. (OWARM .AND. ORAIN))             IPROACTV(NBUDGET_RR, IPROC) = NAUTORR
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OWARM .AND. ORAIN))             IPROACTV(8,IPROC) = NACCRRR 
+     IF (OPTSPLIT .OR. (OWARM .AND. ORAIN))             IPROACTV(NBUDGET_RR, IPROC) = NACCRRR
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OWARM .AND. ORAIN))             IPROACTV(8,IPROC) = NREVARR 
+     IF (OPTSPLIT .OR. (OWARM .AND. ORAIN))             IPROACTV(NBUDGET_RR, IPROC) = NREVARR
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. ONUCL .AND. ORAIN)) IPROACTV(8,IPROC) = NHONRRR 
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. ONUCL .AND. ORAIN)) IPROACTV(NBUDGET_RR, IPROC) = NHONRRR
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW .AND. ORAIN)) IPROACTV(8,IPROC) = NACCRR 
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW .AND. ORAIN)) IPROACTV(NBUDGET_RR, IPROC) = NACCRR
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) IPROACTV(8,IPROC) = NCFRZRR 
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) IPROACTV(NBUDGET_RR, IPROC) = NCFRZRR
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) IPROACTV(8,IPROC) = NWETGRR 
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) IPROACTV(NBUDGET_RR, IPROC) = NWETGRR
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) IPROACTV(8,IPROC) = NDRYGRR 
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) IPROACTV(NBUDGET_RR, IPROC) = NDRYGRR
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) IPROACTV(8,IPROC) = NGMLTRR 
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) IPROACTV(NBUDGET_RR, IPROC) = NGMLTRR
      IPROC=IPROC+1
-     IF (OPTSPLIT)                                      IPROACTV(8,IPROC) = NCVRCRR
+     IF (OPTSPLIT)                                      IPROACTV(NBUDGET_RR, IPROC) = NCVRCRR
      IPROC=IPROC+1
-     IF (.NOT.OPTSPLIT .AND. OHAIL)                     IPROACTV(8,IPROC) = NWETHRR 
+     IF (.NOT.OPTSPLIT .AND. OHAIL)                     IPROACTV(NBUDGET_RR, IPROC) = NWETHRR
      IPROC=IPROC+1
-     IF (.NOT.OPTSPLIT .AND. OHAIL)                     IPROACTV(8,IPROC) = NHMLTRR 
+     IF (.NOT.OPTSPLIT .AND. OHAIL)                     IPROACTV(NBUDGET_RR, IPROC) = NHMLTRR
   ELSE
-     IF (HCLOUD(1:3) == 'KES' )   IPROACTV(8,IPROC) = NSEDIRR 
+     IF (HCLOUD(1:3) == 'KES' )   IPROACTV(NBUDGET_RR, IPROC) = NSEDIRR
      IPROC=IPROC+1
-     IF (HCLOUD(1:3) == 'KES' )   IPROACTV(8,IPROC) = NACCRRR 
+     IF (HCLOUD(1:3) == 'KES' )   IPROACTV(NBUDGET_RR, IPROC) = NACCRRR
      IPROC=IPROC+1
-     IF (HCLOUD(1:3) == 'KES' )   IPROACTV(8,IPROC) = NAUTORR 
+     IF (HCLOUD(1:3) == 'KES' )   IPROACTV(NBUDGET_RR, IPROC) = NAUTORR
      IPROC=IPROC+1
-     IF (HCLOUD(1:3) == 'KES' )   IPROACTV(8,IPROC) = NREVARR 
+     IF (HCLOUD(1:3) == 'KES' )   IPROACTV(NBUDGET_RR, IPROC) = NREVARR
      IPROC=IPROC+1
 !
      IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. (.NOT. LSEDIM_AFTER)) &
-             IPROACTV(8,IPROC) = NSEDIRR
+             IPROACTV(NBUDGET_RR, IPROC) = NSEDIRR
      IPROC=IPROC+1
-     IF (HCLOUD(1:3) == 'ICE' ) IPROACTV(8,IPROC) = NSFRRR 
+     IF (HCLOUD(1:3) == 'ICE' ) IPROACTV(NBUDGET_RR, IPROC) = NSFRRR
      IPROC=IPROC+1
      IF ((HCLOUD(1:3) == 'ICE' ) .AND. LWARM) &
-          IPROACTV(8,IPROC) = NAUTORR
+          IPROACTV(NBUDGET_RR, IPROC) = NAUTORR
      IPROC=IPROC+1
      IF ((HCLOUD(1:3) == 'ICE' ) .AND. LWARM) &
-          IPROACTV(8,IPROC) = NACCRRR 
+          IPROACTV(NBUDGET_RR, IPROC) = NACCRRR
      IPROC=IPROC+1
      IF ((HCLOUD(1:3) == 'ICE' ) .AND. LWARM) &
-          IPROACTV(8,IPROC) = NREVARR 
+          IPROACTV(NBUDGET_RR, IPROC) = NREVARR
      IPROC=IPROC+1
-     IF (HCLOUD(1:3) == 'ICE') IPROACTV(8,IPROC) = NACCRR 
+     IF (HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RR, IPROC) = NACCRR
      IPROC=IPROC+1
-     IF (HCLOUD(1:3) == 'ICE' .AND. LRED) IPROACTV(8,IPROC) = NCMELRR
+     IF (HCLOUD(1:3) == 'ICE' .AND. LRED) IPROACTV(NBUDGET_RR, IPROC) = NCMELRR
      IPROC=IPROC+1
-     IF (HCLOUD(1:3) == 'ICE' ) IPROACTV(8,IPROC) = NCFRZRR 
+     IF (HCLOUD(1:3) == 'ICE' ) IPROACTV(NBUDGET_RR, IPROC) = NCFRZRR
      IPROC=IPROC+1
-     IF (HCLOUD(1:3) == 'ICE' ) IPROACTV(8,IPROC) = NWETGRR 
+     IF (HCLOUD(1:3) == 'ICE' ) IPROACTV(NBUDGET_RR, IPROC) = NWETGRR
      IPROC=IPROC+1
-     IF (HCLOUD(1:3) == 'ICE') IPROACTV(8,IPROC) = NDRYGRR 
+     IF (HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RR, IPROC) = NDRYGRR
      IPROC=IPROC+1
-     IF (HCLOUD(1:3) == 'ICE') IPROACTV(8,IPROC) = NGMLTRR 
+     IF (HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RR, IPROC) = NGMLTRR
      IPROC=IPROC+1
-     IF (HCLOUD == 'ICE4') IPROACTV(8,IPROC) = NWETHRR 
+     IF (HCLOUD == 'ICE4') IPROACTV(NBUDGET_RR, IPROC) = NWETHRR
      IPROC=IPROC+1
-     IF (HCLOUD == 'ICE4' .AND. LRED) IPROACTV(8,IPROC) = NDRYHRR
+     IF (HCLOUD == 'ICE4' .AND. LRED) IPROACTV(NBUDGET_RR, IPROC) = NDRYHRR
      IPROC=IPROC+1
-     IF (HCLOUD == 'ICE4') IPROACTV(8,IPROC) = NHMLTRR 
+     IF (HCLOUD == 'ICE4') IPROACTV(NBUDGET_RR, IPROC) = NHMLTRR
      IPROC=IPROC+1
-     IF (HCLOUD(1:3) == 'ICE' .AND. LRED) IPROACTV(8,IPROC) = NCORRRR
+     IF (HCLOUD(1:3) == 'ICE' .AND. LRED) IPROACTV(NBUDGET_RR, IPROC) = NCORRRR
      IPROC=IPROC+1
-     IF ((HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO') .AND. LRAIN)  IPROACTV(8,IPROC) = NAUTORR
+     IF ((HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO') .AND. LRAIN)  IPROACTV(NBUDGET_RR, IPROC) = NAUTORR
      IPROC=IPROC+1
-     IF ((HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO') .AND. LRAIN)  IPROACTV(8,IPROC) = NACCRRR
+     IF ((HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO') .AND. LRAIN)  IPROACTV(NBUDGET_RR, IPROC) = NACCRRR
      IPROC=IPROC+1
-     IF ((HCLOUD == 'C2R2'.OR. HCLOUD == 'KHKO') .AND. LRAIN)   IPROACTV(8,IPROC) = NREVARR
+     IF ((HCLOUD == 'C2R2'.OR. HCLOUD == 'KHKO') .AND. LRAIN)   IPROACTV(NBUDGET_RR, IPROC) = NREVARR
      IPROC=IPROC+1
      IF (HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO' .OR. &
      (HCLOUD(1:3) == 'ICE' .AND. .NOT. (LRED)) .OR. &
      (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LSEDIM_AFTER)) &
-       IPROACTV(8,IPROC) = NSEDIRR
+       IPROACTV(NBUDGET_RR, IPROC) = NSEDIRR
      IPROC=IPROC+1
   END IF
 !
-  YWORK2(8,1) = 'INIF_'
-  YWORK2(8,2) = 'ENDF_'
-  YWORK2(8,3) = 'AVEF_'
+  YWORK2(NBUDGET_RR, 1) = 'INIF_'
+  YWORK2(NBUDGET_RR, 2) = 'ENDF_'
+  YWORK2(NBUDGET_RR, 3) = 'AVEF_'
   IPROC=4
-  YWORK2(8,IPROC) = 'ASSE_'
+  YWORK2(NBUDGET_RR, IPROC) = 'ASSE_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'NEST_'
+  YWORK2(NBUDGET_RR, IPROC) = 'NEST_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'FRC_'
+  YWORK2(NBUDGET_RR, IPROC) = 'FRC_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'DIF_'
+  YWORK2(NBUDGET_RR, IPROC) = 'DIF_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'REL_'
+  YWORK2(NBUDGET_RR, IPROC) = 'REL_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'ADV_'
+  YWORK2(NBUDGET_RR, IPROC) = 'ADV_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'NEGA_'
+  YWORK2(NBUDGET_RR, IPROC) = 'NEGA_'
   IPROC=IPROC+1
 
 IF (HCLOUD == 'LIMA') THEN
-  YWORK2(8,IPROC) = 'CORR_'
+  YWORK2(NBUDGET_RR, IPROC) = 'CORR_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'SEDI_'
+  YWORK2(NBUDGET_RR, IPROC) = 'SEDI_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'R2C1_'
+  YWORK2(NBUDGET_RR, IPROC) = 'R2C1_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'AUTO_'
+  YWORK2(NBUDGET_RR, IPROC) = 'AUTO_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'ACCR_'
+  YWORK2(NBUDGET_RR, IPROC) = 'ACCR_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'REVA_'
+  YWORK2(NBUDGET_RR, IPROC) = 'REVA_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'HONR_'
+  YWORK2(NBUDGET_RR, IPROC) = 'HONR_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'ACC_'
+  YWORK2(NBUDGET_RR, IPROC) = 'ACC_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'CFRZ_'
+  YWORK2(NBUDGET_RR, IPROC) = 'CFRZ_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'WETG_'
+  YWORK2(NBUDGET_RR, IPROC) = 'WETG_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'DRYG_'
+  YWORK2(NBUDGET_RR, IPROC) = 'DRYG_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'GMLT_'
+  YWORK2(NBUDGET_RR, IPROC) = 'GMLT_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'CVRC_'
+  YWORK2(NBUDGET_RR, IPROC) = 'CVRC_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'WETH_'
+  YWORK2(NBUDGET_RR, IPROC) = 'WETH_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'HMLT_'
+  YWORK2(NBUDGET_RR, IPROC) = 'HMLT_'
   IPROC=IPROC+1
 ELSE
-  YWORK2(8,IPROC) = 'SEDI_'
+  YWORK2(NBUDGET_RR, IPROC) = 'SEDI_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'ACCR_'
+  YWORK2(NBUDGET_RR, IPROC) = 'ACCR_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'AUTO_'
+  YWORK2(NBUDGET_RR, IPROC) = 'AUTO_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'REVA_'
+  YWORK2(NBUDGET_RR, IPROC) = 'REVA_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'SEDI_'
+  YWORK2(NBUDGET_RR, IPROC) = 'SEDI_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'SFR_'
+  YWORK2(NBUDGET_RR, IPROC) = 'SFR_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'AUTO_'
+  YWORK2(NBUDGET_RR, IPROC) = 'AUTO_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'ACCR_'
+  YWORK2(NBUDGET_RR, IPROC) = 'ACCR_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'REVA_'
+  YWORK2(NBUDGET_RR, IPROC) = 'REVA_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'ACC_'
+  YWORK2(NBUDGET_RR, IPROC) = 'ACC_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'CMEL_'
+  YWORK2(NBUDGET_RR, IPROC) = 'CMEL_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'CFRZ_'
+  YWORK2(NBUDGET_RR, IPROC) = 'CFRZ_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'WETG_'
+  YWORK2(NBUDGET_RR, IPROC) = 'WETG_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'DRYG_'
+  YWORK2(NBUDGET_RR, IPROC) = 'DRYG_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'GMLT_'
+  YWORK2(NBUDGET_RR, IPROC) = 'GMLT_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'WETH_'
+  YWORK2(NBUDGET_RR, IPROC) = 'WETH_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'DRYH_'
+  YWORK2(NBUDGET_RR, IPROC) = 'DRYH_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'HMLT_'
+  YWORK2(NBUDGET_RR, IPROC) = 'HMLT_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'CORR_'
+  YWORK2(NBUDGET_RR, IPROC) = 'CORR_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'AUTO_'
+  YWORK2(NBUDGET_RR, IPROC) = 'AUTO_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'ACCR_'
+  YWORK2(NBUDGET_RR, IPROC) = 'ACCR_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'REVA_'
+  YWORK2(NBUDGET_RR, IPROC) = 'REVA_'
   IPROC=IPROC+1
-  YWORK2(8,IPROC) = 'SEDI_'
+  YWORK2(NBUDGET_RR, IPROC) = 'SEDI_'
 END IF
 !
-  YEND_COMMENT(8) = 'BU_RRR'
-  NBUPROCNBR(8) = 3
+  YEND_COMMENT(NBUDGET_RR) = 'BU_RRR'
+  NBUPROCNBR(NBUDGET_RR) = 3
+!
+  CBUACTION(NBUDGET_RR, 1) = 'IG'
+  CBUACTION(NBUDGET_RR, 2) = 'CC'
+  CBUACTION(NBUDGET_RR, 3) = 'ES'
 !
-  CBUACTION(8,1) = 'IG'
-  CBUACTION(8,2) = 'CC'
-  CBUACTION(8,3) = 'ES'
-!  
   DO JJ=1,3
-    CBUCOMMENT(8,JJ) = ADJUSTL( ADJUSTR( YWORK2(8,JJ) ) // &
-                                ADJUSTL( YEND_COMMENT(8) ) )
+    CBUCOMMENT(NBUDGET_RR, JJ) = ADJUSTL( ADJUSTR( YWORK2(NBUDGET_RR, JJ) ) // &
+                                 ADJUSTL( YEND_COMMENT(NBUDGET_RR) ) )
   END DO
 !
 END IF
@@ -1829,224 +1829,224 @@ END IF
 !                        Budget of RRI
 IF (LBU_RRI) THEN
   IPROC=4
-  IPROACTV(9,IPROC) = NASSERI 
+  IPROACTV(NBUDGET_RI, IPROC) = NASSERI
   IPROC=IPROC+1
-  IF( NMODEL>1 ) IPROACTV(9,IPROC) = NNESTRI
+  IF( NMODEL>1 ) IPROACTV(NBUDGET_RI, IPROC) = NNESTRI
   IPROC=IPROC+1
-  IF( LFORCING ) IPROACTV(9,IPROC)  = NFRCRI
+  IF( LFORCING ) IPROACTV(NBUDGET_RI, IPROC)  = NFRCRI
   IPROC=IPROC+1
-  IF( ONUMDIFTH ) IPROACTV(9,IPROC) = NDIFRI
+  IF( ONUMDIFTH ) IPROACTV(NBUDGET_RI, IPROC) = NDIFRI
   IPROC=IPROC+1
   IF ( OHORELAX_RI ) THEN
-    IPROACTV(9,IPROC) = NRELRI
+    IPROACTV(NBUDGET_RI, IPROC) = NRELRI
   ELSE
     IF(OVE_RELAX .OR. OHORELAX_UVWTH .OR. OHORELAX_RV .OR.                 &
      OHORELAX_RC .OR. OHORELAX_RR .OR. OHORELAX_RI .OR. OHORELAX_RS .OR.   &
      OHORELAX_RG .OR. OHORELAX_RH .OR. OHORELAX_TKE .OR. ANY(OHORELAX_SV)) THEN
-      IPROACTV(9,IPROC) = 4
+      IPROACTV(NBUDGET_RI, IPROC) = 4
     ELSE
-      IPROACTV(9,IPROC) = 3
+      IPROACTV(NBUDGET_RI, IPROC) = 3
     END IF
   END IF
   IPROC=IPROC+1
-  IF( HDCONV /= 'NONE' .OR. HSCONV == 'KAFR') IPROACTV(9,IPROC) = NDCONVRI
+  IF( HDCONV /= 'NONE' .OR. HSCONV == 'KAFR') IPROACTV(NBUDGET_RI, IPROC) = NDCONVRI
   IPROC=IPROC+1
-  IF ( HTURB /= 'NONE' ) IPROACTV(9,IPROC) = NVTURBRI
+  IF ( HTURB /= 'NONE' ) IPROACTV(NBUDGET_RI, IPROC) = NVTURBRI
   IPROC=IPROC+1
   IF ( HTURB /= 'NONE' .AND. HTURBDIM == '3DIM' ) THEN
-    IPROACTV(9,IPROC) = NHTURBRI
+    IPROACTV(NBUDGET_RI, IPROC) = NHTURBRI
   ELSE 
     IF ( HTURB /= 'NONE' ) THEN
-      IPROACTV(9,IPROC) = 4
+      IPROACTV(NBUDGET_RI, IPROC) = 4
     ELSE
-      IPROACTV(9,IPROC) = 3
+      IPROACTV(NBUDGET_RI, IPROC) = 3
     END IF
   END IF 
   IPROC=IPROC+1
-  IPROACTV(9,IPROC) = NADVRI
+  IPROACTV(NBUDGET_RI, IPROC) = NADVRI
   IPROC=IPROC+1
-  IF( HCLOUD /= 'NONE' ) IPROACTV(9,IPROC) = NNEGARI
+  IF( HCLOUD /= 'NONE' ) IPROACTV(NBUDGET_RI, IPROC) = NNEGARI
   IPROC=IPROC+1
 
   IF (HCLOUD=='LIMA') THEN
-     IF (OPTSPLIT .AND. OCOLD .AND. OSNOW)                   IPROACTV(9,IPROC) = NCORRRI
+     IF (OPTSPLIT .AND. OCOLD .AND. OSNOW)                   IPROACTV(NBUDGET_RI, IPROC) = NCORRRI
      IPROC=IPROC+1
-     IF (OCOLD .AND. OSEDI)                                  IPROACTV(9,IPROC) = NSEDIRI
+     IF (OCOLD .AND. OSEDI)                                  IPROACTV(NBUDGET_RI, IPROC) = NSEDIRI
      IPROC=IPROC+1
-     IF (OCOLD .AND. ONUCL)                                  IPROACTV(9,IPROC) = NHINDRI
+     IF (OCOLD .AND. ONUCL)                                  IPROACTV(NBUDGET_RI, IPROC) = NHINDRI
      IPROC=IPROC+1
-     IF (OCOLD .AND. ONUCL)                                  IPROACTV(9,IPROC) = NHINCRI
+     IF (OCOLD .AND. ONUCL)                                  IPROACTV(NBUDGET_RI, IPROC) = NHINCRI
      IPROC=IPROC+1
-     IF (OCOLD .AND. ONUCL .AND. OHHONI .AND. NMOD_CCN.GE.1) IPROACTV(9,IPROC) = NHONHRI
+     IF (OCOLD .AND. ONUCL .AND. OHHONI .AND. NMOD_CCN.GE.1) IPROACTV(NBUDGET_RI, IPROC) = NHONHRI
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. ONUCL))      IPROACTV(9,IPROC) = NHONCRI
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. ONUCL))      IPROACTV(NBUDGET_RI, IPROC) = NHONCRI
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OSNOW))                  IPROACTV(9,IPROC) = NCNVIRI
+     IF (OPTSPLIT .OR. (OCOLD .AND. OSNOW))                  IPROACTV(NBUDGET_RI, IPROC) = NCNVIRI
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OSNOW))                  IPROACTV(9,IPROC) = NCNVSRI
+     IF (OPTSPLIT .OR. (OCOLD .AND. OSNOW))                  IPROACTV(NBUDGET_RI, IPROC) = NCNVSRI
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OSNOW))                  IPROACTV(9,IPROC) = NAGGSRI
+     IF (OPTSPLIT .OR. (OCOLD .AND. OSNOW))                  IPROACTV(NBUDGET_RI, IPROC) = NAGGSRI
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM))                  IPROACTV(9,IPROC) = NIMLTRI
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM))                  IPROACTV(NBUDGET_RI, IPROC) = NIMLTRI
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM))                  IPROACTV(9,IPROC) = NBERFIRI
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM))                  IPROACTV(NBUDGET_RI, IPROC) = NBERFIRI
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))      IPROACTV(9,IPROC) = NHMSRI
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))      IPROACTV(NBUDGET_RI, IPROC) = NHMSRI
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))      IPROACTV(9,IPROC) = NCFRZRI
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))      IPROACTV(NBUDGET_RI, IPROC) = NCFRZRI
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))      IPROACTV(9,IPROC) = NWETGRI
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))      IPROACTV(NBUDGET_RI, IPROC) = NWETGRI
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))      IPROACTV(9,IPROC) = NDRYGRI
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))      IPROACTV(NBUDGET_RI, IPROC) = NDRYGRI
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))      IPROACTV(9,IPROC) = NHMGRI
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))      IPROACTV(NBUDGET_RI, IPROC) = NHMGRI
      IPROC=IPROC+1
-     IF (.NOT.OPTSPLIT .AND. OHAIL) IPROACTV(9,IPROC) = NWETHRI
+     IF (.NOT.OPTSPLIT .AND. OHAIL) IPROACTV(NBUDGET_RI, IPROC) = NWETHRI
      IPROC=IPROC+1
-                                       IPROACTV(9,IPROC) = NCEDSRI
+                                       IPROACTV(NBUDGET_RI, IPROC) = NCEDSRI
   ELSE
-     IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LADJ_BEFORE) IPROACTV(9,IPROC) = NADJURI
+     IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LADJ_BEFORE) IPROACTV(NBUDGET_RI, IPROC) = NADJURI
      IPROC=IPROC+1
      IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. (.NOT. LSEDIM_AFTER)) &
-             IPROACTV(9,IPROC) = NSEDIRI
+             IPROACTV(NBUDGET_RI, IPROC) = NSEDIRI
      IPROC=IPROC+1
-     IF( HCLOUD(1:3) == 'ICE') IPROACTV(9,IPROC) = NHENURI
+     IF( HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RI, IPROC) = NHENURI
      IPROC=IPROC+1
-     IF( HCLOUD(1:3) == 'ICE') IPROACTV(9,IPROC) = NHONRI
+     IF( HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RI, IPROC) = NHONRI
      IPROC=IPROC+1
-     IF( HCLOUD(1:3) == 'ICE') IPROACTV(9,IPROC) = NAGGSRI
+     IF( HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RI, IPROC) = NAGGSRI
      IPROC=IPROC+1
-     IF( HCLOUD(1:3) == 'ICE') IPROACTV(9,IPROC) = NAUTSRI
+     IF( HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RI, IPROC) = NAUTSRI
      IPROC=IPROC+1
-     IF( HCLOUD(1:3) == 'ICE') IPROACTV(9,IPROC) = NCFRZRI
+     IF( HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RI, IPROC) = NCFRZRI
      IPROC=IPROC+1
-     IF( HCLOUD(1:3) == 'ICE') IPROACTV(9,IPROC) = NWETGRI
+     IF( HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RI, IPROC) = NWETGRI
      IPROC=IPROC+1
-     IF( HCLOUD(1:3) == 'ICE') IPROACTV(9,IPROC) = NDRYGRI
+     IF( HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RI, IPROC) = NDRYGRI
      IPROC=IPROC+1
-     IF( HCLOUD == 'ICE4' ) IPROACTV(9,IPROC) = NWETHRI
+     IF( HCLOUD == 'ICE4' ) IPROACTV(NBUDGET_RI, IPROC) = NWETHRI
      IPROC=IPROC+1
-     IF( HCLOUD == 'ICE4' .AND. LRED) IPROACTV(9,IPROC) = NDRYHRI
+     IF( HCLOUD == 'ICE4' .AND. LRED) IPROACTV(NBUDGET_RI, IPROC) = NDRYHRI
      IPROC=IPROC+1
-     IF( HCLOUD(1:3) == 'ICE') IPROACTV(9,IPROC) = NIMLTRI
+     IF( HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RI, IPROC) = NIMLTRI
      IPROC=IPROC+1
-     IF( HCLOUD(1:3) == 'ICE') IPROACTV(9,IPROC) = NBERFIRI
+     IF( HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RI, IPROC) = NBERFIRI
      IPROC=IPROC+1
-     IF( HCLOUD(1:3) == 'ICE' .AND. LRED) IPROACTV(9,IPROC) = NCORRRI
+     IF( HCLOUD(1:3) == 'ICE' .AND. LRED) IPROACTV(NBUDGET_RI, IPROC) = NCORRRI
      IPROC=IPROC+1
      IF ((HCLOUD(1:3) == 'ICE' .AND. .NOT. LRED).OR. &
      (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LSEDIM_AFTER)) &
-             IPROACTV(9,IPROC) = NSEDIRI
+             IPROACTV(NBUDGET_RI, IPROC) = NSEDIRI
      IPROC=IPROC+1
      IF (HCLOUD(1:3) == 'ICE' .AND. (.NOT. LRED .OR. (LRED .AND. LADJ_AFTER) )) &
-             IPROACTV(9,IPROC) = NCDEPIRI
+             IPROACTV(NBUDGET_RI, IPROC) = NCDEPIRI
      IPROC=IPROC+1
   END IF
 !
-  YWORK2(9,1) = 'INIF_'
-  YWORK2(9,2) = 'ENDF_'
-  YWORK2(9,3) = 'AVEF_'
+  YWORK2(NBUDGET_RI, 1) = 'INIF_'
+  YWORK2(NBUDGET_RI, 2) = 'ENDF_'
+  YWORK2(NBUDGET_RI, 3) = 'AVEF_'
   IPROC=4
-  YWORK2(9,IPROC) = 'ASSE_'
+  YWORK2(NBUDGET_RI, IPROC) = 'ASSE_'
   IPROC=  IPROC+1
-  YWORK2(9,IPROC) = 'NEST_'
+  YWORK2(NBUDGET_RI, IPROC) = 'NEST_'
   IPROC=  IPROC+1
-  YWORK2(9,IPROC) = 'FRC_'
+  YWORK2(NBUDGET_RI, IPROC) = 'FRC_'
   IPROC=  IPROC+1
-  YWORK2(9,IPROC) = 'DIF_'
+  YWORK2(NBUDGET_RI, IPROC) = 'DIF_'
   IPROC=  IPROC+1
-  YWORK2(9,IPROC) = 'REL_'
+  YWORK2(NBUDGET_RI, IPROC) = 'REL_'
   IPROC=IPROC+1
-  YWORK2(9,IPROC) = 'DCONV_'
+  YWORK2(NBUDGET_RI, IPROC) = 'DCONV_'
   IPROC=IPROC+1
-  YWORK2(9,IPROC) = 'VTURB_'
+  YWORK2(NBUDGET_RI, IPROC) = 'VTURB_'
   IPROC=IPROC+1
-  YWORK2(9,IPROC) = 'HTURB_'
+  YWORK2(NBUDGET_RI, IPROC) = 'HTURB_'
   IPROC=  IPROC+1
-  YWORK2(9,IPROC) = 'ADV_'
+  YWORK2(NBUDGET_RI, IPROC) = 'ADV_'
   IPROC=IPROC+1
-  YWORK2(9,IPROC) = 'NEGA_'
+  YWORK2(NBUDGET_RI, IPROC) = 'NEGA_'
   IPROC=  IPROC+1
   IF (HCLOUD=='LIMA') THEN
-     YWORK2(9,IPROC) = 'CORR_'
+     YWORK2(NBUDGET_RI, IPROC) = 'CORR_'
      IPROC=  IPROC+1
-     YWORK2(9,IPROC) = 'SEDI_'
+     YWORK2(NBUDGET_RI, IPROC) = 'SEDI_'
      IPROC=  IPROC+1
-     YWORK2(9,IPROC) = 'HIND_'
+     YWORK2(NBUDGET_RI, IPROC) = 'HIND_'
      IPROC=  IPROC+1
-     YWORK2(9,IPROC) = 'HINC_'
+     YWORK2(NBUDGET_RI, IPROC) = 'HINC_'
      IPROC=  IPROC+1
-     YWORK2(9,IPROC) = 'HONH_'
+     YWORK2(NBUDGET_RI, IPROC) = 'HONH_'
      IPROC=  IPROC+1
-     YWORK2(9,IPROC) = 'HONC_'
+     YWORK2(NBUDGET_RI, IPROC) = 'HONC_'
      IPROC=  IPROC+1
-     YWORK2(9,IPROC) = 'CNVI_'
+     YWORK2(NBUDGET_RI, IPROC) = 'CNVI_'
      IPROC=  IPROC+1
-     YWORK2(9,IPROC) = 'CNVS_'
+     YWORK2(NBUDGET_RI, IPROC) = 'CNVS_'
      IPROC=  IPROC+1
-     YWORK2(9,IPROC) = 'AGGS_'
+     YWORK2(NBUDGET_RI, IPROC) = 'AGGS_'
      IPROC=  IPROC+1
-     YWORK2(9,IPROC) = 'IMLT_'
+     YWORK2(NBUDGET_RI, IPROC) = 'IMLT_'
      IPROC=  IPROC+1
-     YWORK2(9,IPROC) = 'BERFI_'
+     YWORK2(NBUDGET_RI, IPROC) = 'BERFI_'
      IPROC=  IPROC+1
-     YWORK2(9,IPROC) = 'HMS_'
+     YWORK2(NBUDGET_RI, IPROC) = 'HMS_'
      IPROC=  IPROC+1
-     YWORK2(9,IPROC) = 'CFRZ_'
+     YWORK2(NBUDGET_RI, IPROC) = 'CFRZ_'
      IPROC=  IPROC+1
-     YWORK2(9,IPROC) = 'WETG_'
+     YWORK2(NBUDGET_RI, IPROC) = 'WETG_'
      IPROC=  IPROC+1
-     YWORK2(9,IPROC) = 'DRYG_'
+     YWORK2(NBUDGET_RI, IPROC) = 'DRYG_'
      IPROC=  IPROC+1
-     YWORK2(9,IPROC) = 'HMG_'
+     YWORK2(NBUDGET_RI, IPROC) = 'HMG_'
      IPROC=  IPROC+1
-     YWORK2(9,IPROC) = 'WETH_'
+     YWORK2(NBUDGET_RI, IPROC) = 'WETH_'
      IPROC=  IPROC+1
-     YWORK2(9,IPROC) = 'CEDS_'
+     YWORK2(NBUDGET_RI, IPROC) = 'CEDS_'
   ELSE
-     YWORK2(9,IPROC) = 'ADJU_'
+     YWORK2(NBUDGET_RI, IPROC) = 'ADJU_'
      IPROC=  IPROC+1
-     YWORK2(9,IPROC) = 'SEDI_'
+     YWORK2(NBUDGET_RI, IPROC) = 'SEDI_'
      IPROC=  IPROC+1
-     YWORK2(9,IPROC) = 'HENU_'
+     YWORK2(NBUDGET_RI, IPROC) = 'HENU_'
      IPROC=  IPROC+1
-     YWORK2(9,IPROC) = 'HON_'
+     YWORK2(NBUDGET_RI, IPROC) = 'HON_'
      IPROC=  IPROC+1
-     YWORK2(9,IPROC) = 'AGGS_'
+     YWORK2(NBUDGET_RI, IPROC) = 'AGGS_'
      IPROC=  IPROC+1
-     YWORK2(9,IPROC) = 'AUTS_'
+     YWORK2(NBUDGET_RI, IPROC) = 'AUTS_'
      IPROC=  IPROC+1
-     YWORK2(9,IPROC) = 'CFRZ_'
+     YWORK2(NBUDGET_RI, IPROC) = 'CFRZ_'
      IPROC=  IPROC+1
-     YWORK2(9,IPROC) = 'WETG_'
+     YWORK2(NBUDGET_RI, IPROC) = 'WETG_'
      IPROC=  IPROC+1
-     YWORK2(9,IPROC) = 'DRYG_'
+     YWORK2(NBUDGET_RI, IPROC) = 'DRYG_'
      IPROC=  IPROC+1
-     YWORK2(9,IPROC) = 'WETH_'
+     YWORK2(NBUDGET_RI, IPROC) = 'WETH_'
      IPROC=  IPROC+1
-     YWORK2(9,IPROC) = 'DRYH_'
+     YWORK2(NBUDGET_RI, IPROC) = 'DRYH_'
      IPROC=  IPROC+1
-     YWORK2(9,IPROC) = 'IMLT_'
+     YWORK2(NBUDGET_RI, IPROC) = 'IMLT_'
      IPROC=  IPROC+1
-     YWORK2(9,IPROC) = 'BERFI_'
+     YWORK2(NBUDGET_RI, IPROC) = 'BERFI_'
      IPROC=  IPROC+1
-     YWORK2(9,IPROC) = 'CORR_'
+     YWORK2(NBUDGET_RI, IPROC) = 'CORR_'
      IPROC=  IPROC+1
-     YWORK2(9,IPROC) = 'SEDI_'
+     YWORK2(NBUDGET_RI, IPROC) = 'SEDI_'
      IPROC=  IPROC+1
-     YWORK2(9,IPROC) = 'CDEPI_'
+     YWORK2(NBUDGET_RI, IPROC) = 'CDEPI_'
   END IF
 !
-  YEND_COMMENT(9) = 'BU_RRI'
-  NBUPROCNBR(9) = 3
+  YEND_COMMENT(NBUDGET_RI) = 'BU_RRI'
+  NBUPROCNBR(NBUDGET_RI) = 3
+!
+  CBUACTION(NBUDGET_RI, 1) = 'IG'
+  CBUACTION(NBUDGET_RI, 2) = 'CC'
+  CBUACTION(NBUDGET_RI, 3) = 'ES'
 !
-  CBUACTION(9,1) = 'IG'
-  CBUACTION(9,2) = 'CC'
-  CBUACTION(9,3) = 'ES'
-!  
   DO JJ=1,3
-    CBUCOMMENT(9,JJ) = ADJUSTL( ADJUSTR( YWORK2(9,JJ) ) // &
-                                ADJUSTL( YEND_COMMENT(9) ) )
+    CBUCOMMENT(NBUDGET_RI, JJ) = ADJUSTL( ADJUSTR( YWORK2(NBUDGET_RI, JJ) ) // &
+                                 ADJUSTL( YEND_COMMENT(NBUDGET_RI) ) )
   END DO
 !
 END IF
@@ -2054,173 +2054,173 @@ END IF
 !                        Budget of RRS
 IF (LBU_RRS) THEN
   IPROC=4
-  IPROACTV(10,IPROC) = NASSERS 
+  IPROACTV(NBUDGET_RS, IPROC) = NASSERS
   IPROC=  IPROC+1
-  IF( NMODEL>1 ) IPROACTV(10,IPROC) = NNESTRS
+  IF( NMODEL>1 ) IPROACTV(NBUDGET_RS, IPROC) = NNESTRS
   IPROC=IPROC+1
-  IF( LFORCING )  IPROACTV(10,IPROC)  = NFRCRS
+  IF( LFORCING )  IPROACTV(NBUDGET_RS, IPROC)  = NFRCRS
   IPROC=  IPROC+1
-  IF( ONUMDIFTH ) IPROACTV(10,IPROC) = NDIFRS
+  IF( ONUMDIFTH ) IPROACTV(NBUDGET_RS, IPROC) = NDIFRS
   IPROC=IPROC+1
   IF ( OHORELAX_RS ) THEN
-    IPROACTV(10,IPROC) = NRELRS
+    IPROACTV(NBUDGET_RS, IPROC) = NRELRS
   ELSE
     IF(OVE_RELAX .OR. OHORELAX_UVWTH .OR. OHORELAX_RV .OR.                 &
      OHORELAX_RC .OR. OHORELAX_RR .OR. OHORELAX_RI .OR. OHORELAX_RS .OR.   &
      OHORELAX_RG .OR. OHORELAX_RH .OR. OHORELAX_TKE .OR. ANY(OHORELAX_SV)) THEN
-      IPROACTV(10,IPROC) = 4
+      IPROACTV(NBUDGET_RS, IPROC) = 4
     ELSE
-      IPROACTV(10,IPROC) = 3
+      IPROACTV(NBUDGET_RS, IPROC) = 3
     END IF
   END IF
   IPROC=  IPROC+1
-  IPROACTV(10,IPROC) = NADVRS
+  IPROACTV(NBUDGET_RS, IPROC) = NADVRS
   IPROC=  IPROC+1
-  IF( HCLOUD /= 'NONE' ) IPROACTV(10,IPROC) = NNEGARS
+  IF( HCLOUD /= 'NONE' ) IPROACTV(NBUDGET_RS, IPROC) = NNEGARS
   IPROC=IPROC+1
 
 IF (HCLOUD=='LIMA') THEN
-     IF (OPTSPLIT .AND. OCOLD .AND. OSNOW)              IPROACTV(10,IPROC) = NCORRRS
+     IF (OPTSPLIT .AND. OCOLD .AND. OSNOW)              IPROACTV(NBUDGET_RS, IPROC) = NCORRRS
      IPROC=IPROC+1
-     IF (OCOLD .AND. OSNOW)                             IPROACTV(10,IPROC) = NSEDIRS
+     IF (OCOLD .AND. OSNOW)                             IPROACTV(NBUDGET_RS, IPROC) = NSEDIRS
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OSNOW))             IPROACTV(10,IPROC) = NCNVIRS
+     IF (OPTSPLIT .OR. (OCOLD .AND. OSNOW))             IPROACTV(NBUDGET_RS, IPROC) = NCNVIRS
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OSNOW))             IPROACTV(10,IPROC) = NDEPSRS
+     IF (OPTSPLIT .OR. (OCOLD .AND. OSNOW))             IPROACTV(NBUDGET_RS, IPROC) = NDEPSRS
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OSNOW))             IPROACTV(10,IPROC) = NCNVSRS
+     IF (OPTSPLIT .OR. (OCOLD .AND. OSNOW))             IPROACTV(NBUDGET_RS, IPROC) = NCNVSRS
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OSNOW))             IPROACTV(10,IPROC) = NAGGSRS
+     IF (OPTSPLIT .OR. (OCOLD .AND. OSNOW))             IPROACTV(NBUDGET_RS, IPROC) = NAGGSRS
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) IPROACTV(10,IPROC) = NRIMRS
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) IPROACTV(NBUDGET_RS, IPROC) = NRIMRS
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) IPROACTV(10,IPROC) = NHMSRS
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) IPROACTV(NBUDGET_RS, IPROC) = NHMSRS
      IPROC=IPROC+1            
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW .AND. ORAIN)) IPROACTV(10,IPROC) = NACCRS
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW .AND. ORAIN)) IPROACTV(NBUDGET_RS, IPROC) = NACCRS
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) IPROACTV(10,IPROC) = NCMELRS
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) IPROACTV(NBUDGET_RS, IPROC) = NCMELRS
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) IPROACTV(10,IPROC) = NWETGRS
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) IPROACTV(NBUDGET_RS, IPROC) = NWETGRS
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) IPROACTV(10,IPROC) = NDRYGRS
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) IPROACTV(NBUDGET_RS, IPROC) = NDRYGRS
      IPROC=IPROC+1
-     IF (.NOT.OPTSPLIT .AND. OHAIL)                     IPROACTV(10,IPROC) = NWETHRS
+     IF (.NOT.OPTSPLIT .AND. OHAIL)                     IPROACTV(NBUDGET_RS, IPROC) = NWETHRS
      IPROC=IPROC+1
  ELSE
   IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. (.NOT. LSEDIM_AFTER)) &
-          IPROACTV(10,IPROC) = NSEDIRS
+          IPROACTV(NBUDGET_RS, IPROC) = NSEDIRS
   IPROC=IPROC+1
-  IF( HCLOUD(1:3) == 'ICE') IPROACTV(10,IPROC) = NDEPSRS
+  IF( HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RS, IPROC) = NDEPSRS
   IPROC=IPROC+1
-  IF( HCLOUD(1:3) == 'ICE') IPROACTV(10,IPROC) = NAGGSRS
+  IF( HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RS, IPROC) = NAGGSRS
   IPROC=IPROC+1
-  IF( HCLOUD(1:3) == 'ICE') IPROACTV(10,IPROC) = NAUTSRS
+  IF( HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RS, IPROC) = NAUTSRS
   IPROC=IPROC+1
-  IF( HCLOUD(1:3) == 'ICE') IPROACTV(10,IPROC) = NRIMRS
+  IF( HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RS, IPROC) = NRIMRS
   IPROC=IPROC+1
-  IF( HCLOUD(1:3) == 'ICE') IPROACTV(10,IPROC) = NACCRS
+  IF( HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RS, IPROC) = NACCRS
   IPROC=IPROC+1
-  IF( HCLOUD(1:3) == 'ICE') IPROACTV(10,IPROC) = NCMELRS
+  IF( HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RS, IPROC) = NCMELRS
   IPROC=IPROC+1
-  IF( HCLOUD(1:3) == 'ICE') IPROACTV(10,IPROC) = NWETGRS
+  IF( HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RS, IPROC) = NWETGRS
   IPROC=IPROC+1
-  IF( HCLOUD(1:3) == 'ICE') IPROACTV(10,IPROC) = NDRYGRS
+  IF( HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RS, IPROC) = NDRYGRS
   IPROC=IPROC+1
-  IF( HCLOUD == 'ICE4') IPROACTV(10,IPROC) = NWETHRS
+  IF( HCLOUD == 'ICE4') IPROACTV(NBUDGET_RS, IPROC) = NWETHRS
   IPROC=IPROC+1
-  IF( HCLOUD == 'ICE4' .AND. LRED) IPROACTV(10,IPROC) = NDRYHRS
+  IF( HCLOUD == 'ICE4' .AND. LRED) IPROACTV(NBUDGET_RS, IPROC) = NDRYHRS
   IPROC=IPROC+1
-  IF( HCLOUD(1:3) == 'ICE' .AND. LRED) IPROACTV(10,IPROC) = NCORRRS
+  IF( HCLOUD(1:3) == 'ICE' .AND. LRED) IPROACTV(NBUDGET_RS, IPROC) = NCORRRS
   IPROC=IPROC+1
   IF ((HCLOUD(1:3) == 'ICE' .AND. .NOT. LRED).OR. &
      (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LSEDIM_AFTER)) &
-          IPROACTV(10,IPROC) = NSEDIRS
+          IPROACTV(NBUDGET_RS, IPROC) = NSEDIRS
   IPROC=IPROC+1
 END IF
 !
-  YWORK2(10,1) = 'INIF_'
-  YWORK2(10,2) = 'ENDF_'
-  YWORK2(10,3) = 'AVEF_'
+  YWORK2(NBUDGET_RS, 1) = 'INIF_'
+  YWORK2(NBUDGET_RS, 2) = 'ENDF_'
+  YWORK2(NBUDGET_RS, 3) = 'AVEF_'
   IPROC= 4
-  YWORK2(10,IPROC) = 'ASSE_'
+  YWORK2(NBUDGET_RS, IPROC) = 'ASSE_'
   IPROC=  IPROC+1
-  YWORK2(10,IPROC) = 'NEST_'
+  YWORK2(NBUDGET_RS, IPROC) = 'NEST_'
   IPROC=  IPROC+1
-  YWORK2(10,IPROC) = 'FRC_'
+  YWORK2(NBUDGET_RS, IPROC) = 'FRC_'
   IPROC=  IPROC+1
-  YWORK2(10,IPROC) = 'DIF_'
+  YWORK2(NBUDGET_RS, IPROC) = 'DIF_'
   IPROC=  IPROC+1
-  YWORK2(10,IPROC) = 'REL_'
+  YWORK2(NBUDGET_RS, IPROC) = 'REL_'
   IPROC=  IPROC+1
-  YWORK2(10,IPROC) = 'ADV_'
+  YWORK2(NBUDGET_RS, IPROC) = 'ADV_'
   IPROC=IPROC+1
-  YWORK2(10,IPROC) = 'NEGA_'
+  YWORK2(NBUDGET_RS, IPROC) = 'NEGA_'
   IPROC=  IPROC+1
 IF (HCLOUD=='LIMA') THEN
-  YWORK2(10,IPROC) = 'CORR_'
+  YWORK2(NBUDGET_RS, IPROC) = 'CORR_'
   IPROC=  IPROC+1
-  YWORK2(10,IPROC) = 'SEDI_'
+  YWORK2(NBUDGET_RS, IPROC) = 'SEDI_'
   IPROC=  IPROC+1
-  YWORK2(10,IPROC) = 'CNVI_'
+  YWORK2(NBUDGET_RS, IPROC) = 'CNVI_'
   IPROC=  IPROC+1
-  YWORK2(10,IPROC) = 'DEPS_'
+  YWORK2(NBUDGET_RS, IPROC) = 'DEPS_'
   IPROC=  IPROC+1
-  YWORK2(10,IPROC) = 'CNVS_'
+  YWORK2(NBUDGET_RS, IPROC) = 'CNVS_'
   IPROC=  IPROC+1
-  YWORK2(10,IPROC) = 'AGGS_'
+  YWORK2(NBUDGET_RS, IPROC) = 'AGGS_'
   IPROC=  IPROC+1
-  YWORK2(10,IPROC) = 'RIM_'
+  YWORK2(NBUDGET_RS, IPROC) = 'RIM_'
   IPROC=  IPROC+1
-  YWORK2(10,IPROC) = 'HMS_'
+  YWORK2(NBUDGET_RS, IPROC) = 'HMS_'
   IPROC=  IPROC+1
-  YWORK2(10,IPROC) = 'ACC_'
+  YWORK2(NBUDGET_RS, IPROC) = 'ACC_'
   IPROC=  IPROC+1
-  YWORK2(10,IPROC) = 'CMEL_'
+  YWORK2(NBUDGET_RS, IPROC) = 'CMEL_'
   IPROC=  IPROC+1
-  YWORK2(10,IPROC) = 'WETG_'
+  YWORK2(NBUDGET_RS, IPROC) = 'WETG_'
   IPROC=  IPROC+1
-  YWORK2(10,IPROC) = 'DRYG_'
+  YWORK2(NBUDGET_RS, IPROC) = 'DRYG_'
   IPROC=  IPROC+1
-  YWORK2(10,IPROC) = 'WETH_'
+  YWORK2(NBUDGET_RS, IPROC) = 'WETH_'
   IPROC=  IPROC+1
 ELSE
-  YWORK2(10,IPROC) = 'SEDI_'
+  YWORK2(NBUDGET_RS, IPROC) = 'SEDI_'
   IPROC=  IPROC+1
-  YWORK2(10,IPROC) = 'DEPS_'
+  YWORK2(NBUDGET_RS, IPROC) = 'DEPS_'
   IPROC=  IPROC+1
-  YWORK2(10,IPROC) = 'AGGS_'
+  YWORK2(NBUDGET_RS, IPROC) = 'AGGS_'
   IPROC=  IPROC+1
-  YWORK2(10,IPROC) = 'AUTS_'
+  YWORK2(NBUDGET_RS, IPROC) = 'AUTS_'
   IPROC=  IPROC+1
-  YWORK2(10,IPROC) = 'RIM_'
+  YWORK2(NBUDGET_RS, IPROC) = 'RIM_'
   IPROC=  IPROC+1
-  YWORK2(10,IPROC) = 'ACC_'
+  YWORK2(NBUDGET_RS, IPROC) = 'ACC_'
   IPROC=  IPROC+1
-  YWORK2(10,IPROC) = 'CMEL_'
+  YWORK2(NBUDGET_RS, IPROC) = 'CMEL_'
   IPROC=  IPROC+1
-  YWORK2(10,IPROC) = 'WETG_'
+  YWORK2(NBUDGET_RS, IPROC) = 'WETG_'
   IPROC=  IPROC+1
-  YWORK2(10,IPROC) = 'DRYG_'
+  YWORK2(NBUDGET_RS, IPROC) = 'DRYG_'
   IPROC=  IPROC+1
-  YWORK2(10,IPROC) = 'WETH_'
+  YWORK2(NBUDGET_RS, IPROC) = 'WETH_'
   IPROC=IPROC+1
-  YWORK2(10,IPROC) = 'DRYH_'
+  YWORK2(NBUDGET_RS, IPROC) = 'DRYH_'
   IPROC=IPROC+1
-  YWORK2(10,IPROC) = 'CORR_'
+  YWORK2(NBUDGET_RS, IPROC) = 'CORR_'
   IPROC=IPROC+1
-  YWORK2(10,IPROC) = 'SEDI_'
+  YWORK2(NBUDGET_RS, IPROC) = 'SEDI_'
 END IF
 !
-  YEND_COMMENT(10) = 'BU_RRS'
-  NBUPROCNBR(10) = 3
+  YEND_COMMENT(NBUDGET_RS) = 'BU_RRS'
+  NBUPROCNBR(NBUDGET_RS) = 3
+!
+  CBUACTION(NBUDGET_RS, 1) = 'IG'
+  CBUACTION(NBUDGET_RS, 2) = 'CC'
+  CBUACTION(NBUDGET_RS, 3) = 'ES'
 !
-  CBUACTION(10,1) = 'IG'
-  CBUACTION(10,2) = 'CC'
-  CBUACTION(10,3) = 'ES'
-!  
   DO JJ=1,3
-    CBUCOMMENT(10,JJ) = ADJUSTL( ADJUSTR( YWORK2(10,JJ) ) // &
-                                 ADJUSTL( YEND_COMMENT(10) ) )
+    CBUCOMMENT(NBUDGET_RS, JJ) = ADJUSTL( ADJUSTR( YWORK2(NBUDGET_RS, JJ) ) // &
+                                 ADJUSTL( YEND_COMMENT(NBUDGET_RS) ) )
   END DO
 !
 END IF
@@ -2228,183 +2228,183 @@ END IF
 !                        Budget of RRG
 IF (LBU_RRG) THEN
   IPROC=4
-  IPROACTV(11,IPROC) = NASSERG
+  IPROACTV(NBUDGET_RG, IPROC) = NASSERG
   IPROC=IPROC+1
-  IF( NMODEL>1 ) IPROACTV(11,IPROC) = NNESTRG
+  IF( NMODEL>1 ) IPROACTV(NBUDGET_RG, IPROC) = NNESTRG
   IPROC=IPROC+1
-  IF( LFORCING ) IPROACTV(11,IPROC)  = NFRCRG
+  IF( LFORCING ) IPROACTV(NBUDGET_RG, IPROC)  = NFRCRG
   IPROC=IPROC+1
-  IF( ONUMDIFTH ) IPROACTV(11,IPROC) = NDIFRG
+  IF( ONUMDIFTH ) IPROACTV(NBUDGET_RG, IPROC) = NDIFRG
   IPROC=IPROC+1
   IF ( OHORELAX_RG ) THEN
-    IPROACTV(11,IPROC) = NRELRG
+    IPROACTV(NBUDGET_RG, IPROC) = NRELRG
   ELSE
     IF(OVE_RELAX .OR. OHORELAX_UVWTH .OR. OHORELAX_RV .OR.                 &
      OHORELAX_RC .OR. OHORELAX_RR .OR. OHORELAX_RI .OR. OHORELAX_RS .OR.   &
      OHORELAX_RG .OR. OHORELAX_RH .OR. OHORELAX_TKE .OR. ANY(OHORELAX_SV)) THEN
-      IPROACTV(11,IPROC) = 4
+      IPROACTV(NBUDGET_RG, IPROC) = 4
     ELSE
-      IPROACTV(11,IPROC) = 3
+      IPROACTV(NBUDGET_RG, IPROC) = 3
     END IF
   END IF
   IPROC=IPROC+1
-  IPROACTV(11,IPROC) = NADVRG
+  IPROACTV(NBUDGET_RG, IPROC) = NADVRG
   IPROC=IPROC+1
-  IF( HCLOUD /= 'NONE'  ) IPROACTV(11,IPROC) = NNEGARG
+  IF( HCLOUD /= 'NONE'  ) IPROACTV(NBUDGET_RG, IPROC) = NNEGARG
   IPROC=IPROC+1
 IF (HCLOUD=='LIMA') THEN
-     IF (OCOLD .AND. OSNOW)                                         IPROACTV(11,IPROC) = NSEDIRG
+     IF (OCOLD .AND. OSNOW)                                         IPROACTV(NBUDGET_RG, IPROC) = NSEDIRG
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. ONUCL .AND. ORAIN)) IPROACTV(11,IPROC) = NHONRRG
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. ONUCL .AND. ORAIN)) IPROACTV(NBUDGET_RG, IPROC) = NHONRRG
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))             IPROACTV(11,IPROC) = NDEPGRG
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))             IPROACTV(NBUDGET_RG, IPROC) = NDEPGRG
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))             IPROACTV(11,IPROC) = NRIMRG
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))             IPROACTV(NBUDGET_RG, IPROC) = NRIMRG
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. ORAIN .AND. OSNOW)) IPROACTV(11,IPROC) = NACCRG
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. ORAIN .AND. OSNOW)) IPROACTV(NBUDGET_RG, IPROC) = NACCRG
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))             IPROACTV(11,IPROC) = NCMELRG
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))             IPROACTV(NBUDGET_RG, IPROC) = NCMELRG
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))             IPROACTV(11,IPROC) = NCFRZRG
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))             IPROACTV(NBUDGET_RG, IPROC) = NCFRZRG
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))             IPROACTV(11,IPROC) = NWETGRG
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))             IPROACTV(NBUDGET_RG, IPROC) = NWETGRG
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))             IPROACTV(11,IPROC) = NDRYGRG
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))             IPROACTV(NBUDGET_RG, IPROC) = NDRYGRG
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))             IPROACTV(11,IPROC) = NHMGRG
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))             IPROACTV(NBUDGET_RG, IPROC) = NHMGRG
      IPROC=IPROC+1
-     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))             IPROACTV(11,IPROC) = NGMLTRG
+     IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW))             IPROACTV(NBUDGET_RG, IPROC) = NGMLTRG
      IPROC=IPROC+1
-     IF (.NOT.OPTSPLIT .AND. OHAIL)                                 IPROACTV(11,IPROC) = NWETHRG
+     IF (.NOT.OPTSPLIT .AND. OHAIL)                                 IPROACTV(NBUDGET_RG, IPROC) = NWETHRG
      IPROC=IPROC+1
-     IF (.NOT.OPTSPLIT .AND. OHAIL)                                 IPROACTV(11,IPROC) = NCOHGRG
+     IF (.NOT.OPTSPLIT .AND. OHAIL)                                 IPROACTV(NBUDGET_RG, IPROC) = NCOHGRG
      IPROC=IPROC+1
 ELSE
   IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. (.NOT. LSEDIM_AFTER)) &
-          IPROACTV(11,IPROC) = NSEDIRG
+          IPROACTV(NBUDGET_RG, IPROC) = NSEDIRG
   IPROC=IPROC+1
-  IF( HCLOUD(1:3) == 'ICE') IPROACTV(11,IPROC) = NSFRRG
+  IF( HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RG, IPROC) = NSFRRG
   IPROC=IPROC+1
-  IF( HCLOUD(1:3) == 'ICE') IPROACTV(11,IPROC) = NDEPGRG
+  IF( HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RG, IPROC) = NDEPGRG
   IPROC=IPROC+1
-  IF( HCLOUD(1:3) == 'ICE') IPROACTV(11,IPROC) = NRIMRG
+  IF( HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RG, IPROC) = NRIMRG
   IPROC=IPROC+1
-  IF( HCLOUD(1:3) == 'ICE') IPROACTV(11,IPROC) = NACCRG
+  IF( HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RG, IPROC) = NACCRG
   IPROC=IPROC+1
-  IF( HCLOUD(1:3) == 'ICE') IPROACTV(11,IPROC) = NCMELRG
+  IF( HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RG, IPROC) = NCMELRG
   IPROC=IPROC+1
-  IF( HCLOUD(1:3) == 'ICE') IPROACTV(11,IPROC) = NCFRZRG
+  IF( HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RG, IPROC) = NCFRZRG
   IPROC=IPROC+1
-  IF( HCLOUD(1:3) == 'ICE') IPROACTV(11,IPROC) = NWETGRG
+  IF( HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RG, IPROC) = NWETGRG
   IPROC=IPROC+1
-  IF( HCLOUD == 'ICE4' .AND. LRED) IPROACTV(11,IPROC) = NGHCVRG
+  IF( HCLOUD == 'ICE4' .AND. LRED) IPROACTV(NBUDGET_RG, IPROC) = NGHCVRG
   IPROC=IPROC+1
-  IF( HCLOUD(1:3) == 'ICE') IPROACTV(11,IPROC) = NDRYGRG
+  IF( HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RG, IPROC) = NDRYGRG
   IPROC=IPROC+1
-  IF( HCLOUD(1:3) == 'ICE') IPROACTV(11,IPROC) = NGMLTRG
+  IF( HCLOUD(1:3) == 'ICE') IPROACTV(NBUDGET_RG, IPROC) = NGMLTRG
   IPROC=IPROC+1
-  IF( HCLOUD == 'ICE4' .AND. .NOT. LRED ) IPROACTV(11,IPROC) = NWETHRG
+  IF( HCLOUD == 'ICE4' .AND. .NOT. LRED ) IPROACTV(NBUDGET_RG, IPROC) = NWETHRG
   IPROC=IPROC+1
-  IF( HCLOUD == 'ICE4' .AND. LRED ) IPROACTV(11,IPROC) = NHGCVRG
+  IF( HCLOUD == 'ICE4' .AND. LRED ) IPROACTV(NBUDGET_RG, IPROC) = NHGCVRG
   IPROC=IPROC+1
-  IF( HCLOUD == 'ICE4'  .AND. LRED) IPROACTV(11,IPROC) = NDRYHRG
+  IF( HCLOUD == 'ICE4'  .AND. LRED) IPROACTV(NBUDGET_RG, IPROC) = NDRYHRG
   IPROC=IPROC+1
-  IF( HCLOUD(1:3) == 'ICE'  .AND. LRED) IPROACTV(11,IPROC) = NCORRRG
+  IF( HCLOUD(1:3) == 'ICE'  .AND. LRED) IPROACTV(NBUDGET_RG, IPROC) = NCORRRG
   IPROC=IPROC+1
   IF ((HCLOUD(1:3) == 'ICE' .AND. .NOT. LRED).OR. &
      (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LSEDIM_AFTER)) &
-          IPROACTV(11,IPROC) = NSEDIRG
+          IPROACTV(NBUDGET_RG, IPROC) = NSEDIRG
   IPROC=IPROC+1
 END IF
 !
-  YWORK2(11,1) = 'INIF_'
-  YWORK2(11,2) = 'ENDF_'
-  YWORK2(11,3) = 'AVEF_'
+  YWORK2(NBUDGET_RG, 1) = 'INIF_'
+  YWORK2(NBUDGET_RG, 2) = 'ENDF_'
+  YWORK2(NBUDGET_RG, 3) = 'AVEF_'
   IPROC=4
-  YWORK2(11,IPROC) = 'ASSE_'
+  YWORK2(NBUDGET_RG, IPROC) = 'ASSE_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'NEST_'
+  YWORK2(NBUDGET_RG, IPROC) = 'NEST_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'FRC_'
+  YWORK2(NBUDGET_RG, IPROC) = 'FRC_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'DIF_'
+  YWORK2(NBUDGET_RG, IPROC) = 'DIF_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'REL_'
+  YWORK2(NBUDGET_RG, IPROC) = 'REL_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'ADV_'
+  YWORK2(NBUDGET_RG, IPROC) = 'ADV_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'NEGA_'
+  YWORK2(NBUDGET_RG, IPROC) = 'NEGA_'
   IPROC=IPROC+1
 IF (HCLOUD=='LIMA') THEN
-  YWORK2(11,IPROC) = 'SEDI_'
+  YWORK2(NBUDGET_RG, IPROC) = 'SEDI_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'HONR_'
+  YWORK2(NBUDGET_RG, IPROC) = 'HONR_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'DEPG_'
+  YWORK2(NBUDGET_RG, IPROC) = 'DEPG_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'RIM_'
+  YWORK2(NBUDGET_RG, IPROC) = 'RIM_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'ACC_'
+  YWORK2(NBUDGET_RG, IPROC) = 'ACC_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'CMEL_'
+  YWORK2(NBUDGET_RG, IPROC) = 'CMEL_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'CFRZ_'
+  YWORK2(NBUDGET_RG, IPROC) = 'CFRZ_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'WETG_'
+  YWORK2(NBUDGET_RG, IPROC) = 'WETG_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'DRYG_'
+  YWORK2(NBUDGET_RG, IPROC) = 'DRYG_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'HMG_'
+  YWORK2(NBUDGET_RG, IPROC) = 'HMG_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'GMLT_'
+  YWORK2(NBUDGET_RG, IPROC) = 'GMLT_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'WETH_'
+  YWORK2(NBUDGET_RG, IPROC) = 'WETH_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'COHG_'
+  YWORK2(NBUDGET_RG, IPROC) = 'COHG_'
 ELSE
-  YWORK2(11,IPROC) = 'SEDI_'
+  YWORK2(NBUDGET_RG, IPROC) = 'SEDI_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC)= 'SFR_'
+  YWORK2(NBUDGET_RG, IPROC)= 'SFR_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'DEPG_'
+  YWORK2(NBUDGET_RG, IPROC) = 'DEPG_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'RIM_'
+  YWORK2(NBUDGET_RG, IPROC) = 'RIM_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'ACC_'
+  YWORK2(NBUDGET_RG, IPROC) = 'ACC_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'CMEL_'
+  YWORK2(NBUDGET_RG, IPROC) = 'CMEL_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'CFRZ_'
+  YWORK2(NBUDGET_RG, IPROC) = 'CFRZ_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'WETG_'
+  YWORK2(NBUDGET_RG, IPROC) = 'WETG_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'GHCV_'
+  YWORK2(NBUDGET_RG, IPROC) = 'GHCV_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'DRYG_'
+  YWORK2(NBUDGET_RG, IPROC) = 'DRYG_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'GMLT_'
+  YWORK2(NBUDGET_RG, IPROC) = 'GMLT_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'WETH_'
+  YWORK2(NBUDGET_RG, IPROC) = 'WETH_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'HGCV_'
+  YWORK2(NBUDGET_RG, IPROC) = 'HGCV_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'DRYH_'
+  YWORK2(NBUDGET_RG, IPROC) = 'DRYH_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'CORR_'
+  YWORK2(NBUDGET_RG, IPROC) = 'CORR_'
   IPROC=IPROC+1
-  YWORK2(11,IPROC)= 'SEDI_'
+  YWORK2(NBUDGET_RG, IPROC)= 'SEDI_'
 END IF
 !
-  YEND_COMMENT(11) = 'BU_RRG'
-  NBUPROCNBR(11) = 3
+  YEND_COMMENT(NBUDGET_RG) = 'BU_RRG'
+  NBUPROCNBR(NBUDGET_RG) = 3
+!
+  CBUACTION(NBUDGET_RG, 1) = 'IG'
+  CBUACTION(NBUDGET_RG, 2) = 'CC'
+  CBUACTION(NBUDGET_RG, 3) = 'ES'
 !
-  CBUACTION(11,1) = 'IG'
-  CBUACTION(11,2) = 'CC'
-  CBUACTION(11,3) = 'ES'
-!  
   DO JJ=1,3
-    CBUCOMMENT(11,JJ) = ADJUSTL( ADJUSTR( YWORK2(11,JJ) ) // &
-                                 ADJUSTL( YEND_COMMENT(11) ) )
+    CBUCOMMENT(NBUDGET_RG, JJ) = ADJUSTL( ADJUSTR( YWORK2(NBUDGET_RG, JJ) ) // &
+                                 ADJUSTL( YEND_COMMENT(NBUDGET_RG) ) )
   END DO
 !
 END IF
@@ -2412,139 +2412,139 @@ END IF
 !                        Budget of RRH
 IF (LBU_RRH) THEN
   IPROC=4
-  IPROACTV(12,IPROC) = NASSERH 
+  IPROACTV(NBUDGET_RH, IPROC) = NASSERH
   IPROC=IPROC+1
   IF( NMODEL>1 ) THEN
-    IPROACTV(12,IPROC) = NNESTRH 
+    IPROACTV(NBUDGET_RH, IPROC) = NNESTRH
   ELSE
-    IPROACTV(12,IPROC) = 3
+    IPROACTV(NBUDGET_RH, IPROC) = 3
   END IF
   IPROC=IPROC+1
    IF( LFORCING ) THEN
-    IPROACTV(12,IPROC)  = NFRCRH
+    IPROACTV(NBUDGET_RH, IPROC)  = NFRCRH
   ELSE
-    IPROACTV(12,IPROC)  = 3
+    IPROACTV(NBUDGET_RH, IPROC)  = 3
   END IF 
   IPROC=IPROC+1
   IF( ONUMDIFTH ) THEN
-    IPROACTV(12,IPROC) = NDIFRH 
+    IPROACTV(NBUDGET_RH, IPROC) = NDIFRH
   ELSE
-    IPROACTV(12,IPROC) = 3    
+    IPROACTV(NBUDGET_RH, IPROC) = 3
   END IF
   IPROC=IPROC+1
   IF ( OHORELAX_RH ) THEN
-    IPROACTV(12,IPROC) = NRELRH
+    IPROACTV(NBUDGET_RH, IPROC) = NRELRH
   ELSE
     IF(OVE_RELAX .OR. OHORELAX_UVWTH .OR. OHORELAX_RV .OR.                 &
      OHORELAX_RC .OR. OHORELAX_RR .OR. OHORELAX_RI .OR. OHORELAX_RS .OR.   &
      OHORELAX_RG .OR. OHORELAX_RH .OR. OHORELAX_TKE .OR. ANY(OHORELAX_SV)) THEN
-      IPROACTV(12,IPROC) = 4
+      IPROACTV(NBUDGET_RH, IPROC) = 4
     ELSE
-      IPROACTV(12,IPROC) = 3
+      IPROACTV(NBUDGET_RH, IPROC) = 3
     END IF
   END IF
   IPROC=IPROC+1
-  IPROACTV(12,IPROC) = NADVRH
+  IPROACTV(NBUDGET_RH, IPROC) = NADVRH
   IPROC=IPROC+1
   IF( HCLOUD /= 'NONE' ) THEN
-    IPROACTV(12,IPROC) = NNEGARH 
+    IPROACTV(NBUDGET_RH, IPROC) = NNEGARH
   ELSE
-    IPROACTV(12,IPROC) = 3    
+    IPROACTV(NBUDGET_RH, IPROC) = 3
   END IF
   IPROC=IPROC+1
 !
   IF (HCLOUD=='LIMA' .AND. OHAIL) THEN
-     IPROACTV(12,IPROC) = NSEDIRH
+     IPROACTV(NBUDGET_RH, IPROC) = NSEDIRH
      IPROC=IPROC+1
-     IPROACTV(12,IPROC) = NWETGRH
+     IPROACTV(NBUDGET_RH, IPROC) = NWETGRH
      IPROC=IPROC+1
-     IF (.NOT.OPTSPLIT) IPROACTV(12,IPROC) = NWETHRH
+     IF (.NOT.OPTSPLIT) IPROACTV(NBUDGET_RH, IPROC) = NWETHRH
      IPROC=IPROC+1
-     IF (.NOT.OPTSPLIT) IPROACTV(12,IPROC) = NCOHGRH
+     IF (.NOT.OPTSPLIT) IPROACTV(NBUDGET_RH, IPROC) = NCOHGRH
      IPROC=IPROC+1
-     IF (.NOT.OPTSPLIT) IPROACTV(12,IPROC) = NHMLTRH
+     IF (.NOT.OPTSPLIT) IPROACTV(NBUDGET_RH, IPROC) = NHMLTRH
   ELSE
   IF( HCLOUD == 'ICE4' .AND. LRED .AND. .NOT. LSEDIM_AFTER) &
-          IPROACTV(12,IPROC) = NSEDIRH
+          IPROACTV(NBUDGET_RH, IPROC) = NSEDIRH
   IPROC=IPROC+1
-  IF( HCLOUD == 'ICE4' .AND. LRED) IPROACTV(12,IPROC) = NGHCVRH
+  IF( HCLOUD == 'ICE4' .AND. LRED) IPROACTV(NBUDGET_RH, IPROC) = NGHCVRH
   IPROC=IPROC+1
-  IF( HCLOUD == 'ICE4' .AND. .NOT. LRED) IPROACTV(12,IPROC) = NWETGRH
+  IF( HCLOUD == 'ICE4' .AND. .NOT. LRED) IPROACTV(NBUDGET_RH, IPROC) = NWETGRH
   IPROC=IPROC+1
-  IF( HCLOUD == 'ICE4') IPROACTV(12,IPROC) = NWETHRH
+  IF( HCLOUD == 'ICE4') IPROACTV(NBUDGET_RH, IPROC) = NWETHRH
   IPROC=IPROC+1
-  IF( HCLOUD == 'ICE4' .AND. LRED) IPROACTV(12,IPROC) = NHGCVRH
+  IF( HCLOUD == 'ICE4' .AND. LRED) IPROACTV(NBUDGET_RH, IPROC) = NHGCVRH
   IPROC=IPROC+1
-  IF( HCLOUD == 'ICE4' .AND. LRED) IPROACTV(12,IPROC) = NDRYHRH
+  IF( HCLOUD == 'ICE4' .AND. LRED) IPROACTV(NBUDGET_RH, IPROC) = NDRYHRH
   IPROC=IPROC+1
-  IF( HCLOUD == 'ICE4' ) IPROACTV(12,IPROC) = NHMLTRH
+  IF( HCLOUD == 'ICE4' ) IPROACTV(NBUDGET_RH, IPROC) = NHMLTRH
   IPROC=IPROC+1
-  IF( HCLOUD == 'ICE4' .AND. LRED) IPROACTV(12,IPROC) = NCORRRH
+  IF( HCLOUD == 'ICE4' .AND. LRED) IPROACTV(NBUDGET_RH, IPROC) = NCORRRH
   IPROC=IPROC+1
   IF ((HCLOUD(1:3) == 'ICE' .AND. .NOT. LRED).OR. &
      (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LSEDIM_AFTER)) &
-          IPROACTV(12,IPROC) = NSEDIRH
+          IPROACTV(NBUDGET_RH, IPROC) = NSEDIRH
   END IF
 !
-  YWORK2(12,1) = 'INIF_'
-  YWORK2(12,2) = 'ENDF_'
-  YWORK2(12,3) = 'AVEF_'
+  YWORK2(NBUDGET_RH, 1) = 'INIF_'
+  YWORK2(NBUDGET_RH, 2) = 'ENDF_'
+  YWORK2(NBUDGET_RH, 3) = 'AVEF_'
   IPROC=4
-  YWORK2(12,IPROC) = 'ASSE_'
+  YWORK2(NBUDGET_RH, IPROC) = 'ASSE_'
   IPROC=IPROC+1
-  YWORK2(12,IPROC) = 'NEST_'
+  YWORK2(NBUDGET_RH, IPROC) = 'NEST_'
   IPROC=IPROC+1
-  YWORK2(12,IPROC) = 'FRC_'
+  YWORK2(NBUDGET_RH, IPROC) = 'FRC_'
   IPROC=IPROC+1
-  YWORK2(12,IPROC) = 'DIF_'
+  YWORK2(NBUDGET_RH, IPROC) = 'DIF_'
   IPROC=IPROC+1
-  YWORK2(12,IPROC) = 'REL_'
+  YWORK2(NBUDGET_RH, IPROC) = 'REL_'
   IPROC=IPROC+1
-  YWORK2(12,IPROC) = 'ADV_'
+  YWORK2(NBUDGET_RH, IPROC) = 'ADV_'
   IPROC=IPROC+1
-  YWORK2(12,IPROC) = 'NEGA_'
+  YWORK2(NBUDGET_RH, IPROC) = 'NEGA_'
   IPROC=IPROC+1
   IF (HCLOUD=='LIMA' .AND. OHAIL) THEN
-     YWORK2(12,IPROC) = 'SEDI_'
+     YWORK2(NBUDGET_RH, IPROC) = 'SEDI_'
      IPROC=IPROC+1
-     YWORK2(12,IPROC) = 'WETG_'
+     YWORK2(NBUDGET_RH, IPROC) = 'WETG_'
      IPROC=IPROC+1
-     YWORK2(12,IPROC) = 'WETH_'
+     YWORK2(NBUDGET_RH, IPROC) = 'WETH_'
      IPROC=IPROC+1
-     YWORK2(12,IPROC) = 'COHG_'
+     YWORK2(NBUDGET_RH, IPROC) = 'COHG_'
      IPROC=IPROC+1
-     YWORK2(12,IPROC) = 'HMLT_'
+     YWORK2(NBUDGET_RH, IPROC) = 'HMLT_'
      IPROC=IPROC+1
   ELSE
-     YWORK2(12,IPROC) = 'SEDI_'
+     YWORK2(NBUDGET_RH, IPROC) = 'SEDI_'
      IPROC=IPROC+1
-     YWORK2(12,IPROC) = 'GHCV_'
+     YWORK2(NBUDGET_RH, IPROC) = 'GHCV_'
      IPROC=IPROC+1
-     YWORK2(12,IPROC) = 'WETG_'
+     YWORK2(NBUDGET_RH, IPROC) = 'WETG_'
      IPROC=IPROC+1
-     YWORK2(12,IPROC) = 'WETH_'
+     YWORK2(NBUDGET_RH, IPROC) = 'WETH_'
      IPROC=IPROC+1
-     YWORK2(12,IPROC) = 'HGCV_'
+     YWORK2(NBUDGET_RH, IPROC) = 'HGCV_'
      IPROC=IPROC+1
-     YWORK2(12,IPROC) = 'DRYH_'
+     YWORK2(NBUDGET_RH, IPROC) = 'DRYH_'
      IPROC=IPROC+1
-     YWORK2(12,IPROC) = 'HMLT_'
+     YWORK2(NBUDGET_RH, IPROC) = 'HMLT_'
      IPROC=IPROC+1
-     YWORK2(12,IPROC) = 'CORR_'
+     YWORK2(NBUDGET_RH, IPROC) = 'CORR_'
      IPROC=IPROC+1
-     YWORK2(12,IPROC) = 'SEDI_'
+     YWORK2(NBUDGET_RH, IPROC) = 'SEDI_'
   END IF
 !
-  YEND_COMMENT(12) = 'BU_RRH'
-  NBUPROCNBR(12) = 3
+  YEND_COMMENT(NBUDGET_RH) = 'BU_RRH'
+  NBUPROCNBR(NBUDGET_RH) = 3
 !
-  CBUACTION(12,1) = 'IG'
-  CBUACTION(12,2) = 'CC'
-  CBUACTION(12,3) = 'ES'
+  CBUACTION(NBUDGET_RH, 1) = 'IG'
+  CBUACTION(NBUDGET_RH, 2) = 'CC'
+  CBUACTION(NBUDGET_RH, 3) = 'ES'
 !  
   DO JJ=1,3
-    CBUCOMMENT(12,JJ) = ADJUSTL( ADJUSTR( YWORK2(12,JJ) ) // &
-                                 ADJUSTL( YEND_COMMENT(12) ) )
+    CBUCOMMENT(NBUDGET_RH, JJ) = ADJUSTL( ADJUSTR( YWORK2(NBUDGET_RH, JJ) ) // &
+                                 ADJUSTL( YEND_COMMENT(NBUDGET_RH) ) )
   END DO
 !
 
@@ -2555,91 +2555,91 @@ IF (LBU_RSV) THEN
   IBUPROCNBR_SV_MAX = 0 ! initialize the Max nunmber of processes for the SVs
   DO JSV = 1,KSV
     IPROC=4
-    IPROACTV(12+JSV,IPROC) = NASSESV 
+    IPROACTV(NBUDGET_SV1 - 1 + JSV, IPROC) = NASSESV
     IPROC=IPROC+1
-    IF( NMODEL>1 ) IPROACTV(12+JSV,IPROC) = NNESTSV
+    IF( NMODEL>1 ) IPROACTV(NBUDGET_SV1 - 1 + JSV, IPROC) = NNESTSV
     IPROC=IPROC+1
-    IF( LFORCING ) IPROACTV(12+JSV,IPROC)  = NFRCSV
+    IF( LFORCING ) IPROACTV(NBUDGET_SV1 - 1 + JSV, IPROC)  = NFRCSV
     IPROC=IPROC+1
-    IF ( ONUMDIFSV ) IPROACTV(12+JSV,IPROC) = NDIFSV
+    IF ( ONUMDIFSV ) IPROACTV(NBUDGET_SV1 - 1 + JSV, IPROC) = NDIFSV
     IPROC=IPROC+1
     IF ( OHORELAX_SV(JSV) ) THEN
-      IPROACTV(12+JSV,IPROC) = NRELSV
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, IPROC) = NRELSV
     ELSE
     IF(OVE_RELAX .OR. OHORELAX_UVWTH .OR. OHORELAX_RV .OR.                 &
      OHORELAX_RC .OR. OHORELAX_RR .OR. OHORELAX_RI .OR. OHORELAX_RS .OR.   &
      OHORELAX_RG .OR. OHORELAX_RH .OR. OHORELAX_TKE .OR. ANY(OHORELAX_SV)) THEN
-        IPROACTV(12+JSV,IPROC) = 4
+        IPROACTV(NBUDGET_SV1 - 1 + JSV, IPROC) = 4
       ELSE
-        IPROACTV(12+JSV,IPROC) = 3
+        IPROACTV(NBUDGET_SV1 - 1 + JSV, IPROC) = 3
       END IF
     END IF
     IPROC=IPROC+1
     IF ( (HDCONV /= 'NONE' .OR. HSCONV == 'KAFR') .AND. OCHTRANS ) &
-        IPROACTV(12+JSV,IPROC) = NDCONVSV
+        IPROACTV(NBUDGET_SV1 - 1 + JSV, IPROC) = NDCONVSV
     IPROC=IPROC+1
     IF ( ODRAGTREE .AND. ODEPOTREE  ) &
-        IPROACTV(12+JSV,IPROC) = NDEPOTRSV
+        IPROACTV(NBUDGET_SV1 - 1 + JSV, IPROC) = NDEPOTRSV
     IPROC=IPROC+1    
-    IF ( HTURB /= 'NONE' ) IPROACTV(12+JSV,IPROC) = NVTURBSV
+    IF ( HTURB /= 'NONE' ) IPROACTV(NBUDGET_SV1 - 1 + JSV, IPROC) = NVTURBSV
     IPROC=IPROC+1
     IF ( HTURB /= 'NONE' .AND. HTURBDIM == '3DIM' ) THEN
-      IPROACTV(12+JSV,IPROC) = NHTURBSV
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, IPROC) = NHTURBSV
     ELSE
       IF ( HTURB /= 'NONE' ) THEN
-        IPROACTV(12+JSV,IPROC) = 4
+        IPROACTV(NBUDGET_SV1 - 1 + JSV, IPROC) = 4
       ELSE
-        IPROACTV(12+JSV,IPROC) = 3
+        IPROACTV(NBUDGET_SV1 - 1 + JSV, IPROC) = 3
       END IF
     END IF 
     IPROC=IPROC+1
-    IF ( HSCONV == 'EDKF' ) IPROACTV(12+JSV,IPROC)= NMAFLSV
+    IF ( HSCONV == 'EDKF' ) IPROACTV(NBUDGET_SV1 - 1 + JSV, IPROC)= NMAFLSV
     IPROC=IPROC+1
-    IPROACTV(12+JSV,IPROC)= NADVSV
+    IPROACTV(NBUDGET_SV1 - 1 + JSV, IPROC)= NADVSV
     IPROC=IPROC+1
 !
-    YWORK2(12+JSV,1) = 'INIF_'
-    YWORK2(12+JSV,2) = 'ENDF_'
-    YWORK2(12+JSV,3) = 'AVEF_'
+    YWORK2(NBUDGET_SV1 - 1 + JSV, 1) = 'INIF_'
+    YWORK2(NBUDGET_SV1 - 1 + JSV, 2) = 'ENDF_'
+    YWORK2(NBUDGET_SV1 - 1 + JSV, 3) = 'AVEF_'
     IPROC=4
-    YWORK2(12+JSV,IPROC) = 'ASSE_'
+    YWORK2(NBUDGET_SV1 - 1 + JSV, IPROC) = 'ASSE_'
     IPROC=IPROC+1
-    YWORK2(12+JSV,IPROC) = 'NEST_'
+    YWORK2(NBUDGET_SV1 - 1 + JSV, IPROC) = 'NEST_'
     IPROC=IPROC+1
-    YWORK2(12+JSV,IPROC) = 'FRC_'
+    YWORK2(NBUDGET_SV1 - 1 + JSV, IPROC) = 'FRC_'
     IPROC=IPROC+1
-    YWORK2(12+JSV,IPROC) = 'DIF_'
+    YWORK2(NBUDGET_SV1 - 1 + JSV, IPROC) = 'DIF_'
     IPROC=IPROC+1
-    YWORK2(12+JSV,IPROC) = 'REL_'
+    YWORK2(NBUDGET_SV1 - 1 + JSV, IPROC) = 'REL_'
     IPROC=IPROC+1
-    YWORK2(12+JSV,IPROC) = 'DCONV_'
+    YWORK2(NBUDGET_SV1 - 1 + JSV, IPROC) = 'DCONV_'
     IPROC=IPROC+1
-    YWORK2(12+JSV,IPROC) = 'DEPOTR'
+    YWORK2(NBUDGET_SV1 - 1 + JSV, IPROC) = 'DEPOTR'
     IPROC=IPROC+1
-    YWORK2(12+JSV,IPROC) = 'VTURB_'
+    YWORK2(NBUDGET_SV1 - 1 + JSV, IPROC) = 'VTURB_'
     IPROC=IPROC+1
-    YWORK2(12+JSV,IPROC) = 'HTURB_'
+    YWORK2(NBUDGET_SV1 - 1 + JSV, IPROC) = 'HTURB_'
     IPROC=IPROC+1
-    YWORK2(12+JSV,IPROC) = 'MAFL_'
+    YWORK2(NBUDGET_SV1 - 1 + JSV, IPROC) = 'MAFL_'
     IPROC=IPROC+1
-    YWORK2(12+JSV,IPROC) = 'ADV_'
+    YWORK2(NBUDGET_SV1 - 1 + JSV, IPROC) = 'ADV_'
 !
 ! complete with the budget of other processes
 !
     ILAST_PROC_NBR = IPROC
     CALL BUDGET_OTHERPROC_SV
 !
-    YEND_COMMENT(12+JSV) = 'BU_RSV'
+    YEND_COMMENT(NBUDGET_SV1 - 1 + JSV) = 'BU_RSV'
     IBUPROCNBR_SV_MAX   = MAX( IBUPROCNBR_SV_MAX, ILAST_PROC_NBR )
-    NBUPROCNBR(12+JSV) = 3
+    NBUPROCNBR(NBUDGET_SV1 - 1 + JSV) = 3
+!
+    CBUACTION(NBUDGET_SV1 - 1 + JSV, 1) = 'IG'
+    CBUACTION(NBUDGET_SV1 - 1 + JSV, 2) = 'CC'
+    CBUACTION(NBUDGET_SV1 - 1 + JSV, 3) = 'ES'
 !
-    CBUACTION(12+JSV,1) = 'IG'
-    CBUACTION(12+JSV,2) = 'CC'
-    CBUACTION(12+JSV,3) = 'ES'
-!  
     DO JJ=1,3
-      CBUCOMMENT(12+JSV,JJ) = ADJUSTL( ADJUSTR( YWORK2(12+JSV,JJ) ) // &
-                                       ADJUSTL( YEND_COMMENT(12+JSV) ) )
+      CBUCOMMENT(NBUDGET_SV1 - 1 + JSV, JJ) = ADJUSTL( ADJUSTR( YWORK2(NBUDGET_SV1 - 1 + JSV, JJ) ) // &
+                                              ADJUSTL( YEND_COMMENT(NBUDGET_SV1 - 1 + JSV) ) )
     END DO
   END DO
 !
@@ -2892,18 +2892,18 @@ USE MODD_PARAM_LIMA, ONLY : NMOD_CCN, NMOD_IFN, NMOD_IMM
 !   SELECT CASE(JSV)
 !   CASE (1)
 !     ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-!     YWORK2(12+JSV,ILAST_PROC_NBR)= 'PROC1_'
-!     IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+!     YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'PROC1_'
+!     IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
 !     ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-!     YWORK2(12+JSV,ILAST_PROC_NBR)= 'PROC2_'
-!     IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+!     YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'PROC2_'
+!     IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
 !   CASE (2)
 !     ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-!     YWORK2(12+JSV,ILAST_PROC_NBR)= 'PROC3_'
-!     IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+!     YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'PROC3_'
+!     IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
 !     ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-!     YWORK2(12+JSV,ILAST_PROC_NBR)= 'PROC4_'
-!     IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+!     YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'PROC4_'
+!     IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
 !   END SELECT
     !
   ELSEIF (JSV >= NSV_C2R2BEG .AND. JSV <= NSV_C2R2END) THEN  
@@ -2912,55 +2912,55 @@ USE MODD_PARAM_LIMA, ONLY : NMOD_CCN, NMOD_IFN, NMOD_IMM
     CASE (1)                               ! Concentration of activated nuclei
      IF (.NOT. LSUPSAT) THEN
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR)= 'HENU_'
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'HENU_'
      END IF
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR)= 'CEVA_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'CEVA_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
     CASE (2)                               ! Concentration of cloud droplets
      IF (.NOT. LSUPSAT) THEN
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR)= 'HENU_'
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'HENU_'
      END IF
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR)= 'SELF_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'SELF_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR)= 'ACCR_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'ACCR_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       IF (LSEDC) THEN
         ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-        YWORK2(12+JSV,ILAST_PROC_NBR)= 'SEDI_'
-        IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+        YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'SEDI_'
+        IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (LDEPOC) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'DEPO_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'DEPO_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR)= 'CEVA_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'CEVA_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
     CASE (3)                               ! Concentration of raindrops
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR)= 'AUTO_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'AUTO_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       IF (HCLOUD /= 'KHKO') THEN
        ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-       YWORK2(12+JSV,ILAST_PROC_NBR)= 'SCBU_'
-       IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+       YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'SCBU_'
+       IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR)= 'CEVA_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'CEVA_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR)= 'BRKU_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'BRKU_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR)= 'SEDI_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'SEDI_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
     END SELECT
     !
 ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN  
@@ -2968,210 +2968,210 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN
    IF (JSV == NSV_LIMA_NC) THEN
       ! Cloud droplets conc.
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'NEGA_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       IF (OPTSPLIT .AND. OWARM .AND. ORAIN) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'CORR_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'CORR_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OSEDC) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'SEDI_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'SEDI_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (ODEPOC) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'DEPO_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'DEPO_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OPTSPLIT .AND. ORAIN) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'R2C1_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'R2C1_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OWARM .AND. OACTI .AND. NMOD_CCN.GE.1) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'HENU_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'HENU_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OCOLD .AND. ONUCL .AND. OPTSPLIT) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'HINC_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'HINC_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OPTSPLIT .OR. (OWARM .AND. ORAIN)) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'SELF_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'SELF_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OPTSPLIT .OR. ORAIN) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'AUTO_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'AUTO_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OPTSPLIT .OR. ORAIN) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'ACCR_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'ACCR_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OPTSPLIT .OR. ORAIN) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'REVA_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'REVA_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OCOLD .AND. ONUCL .AND. .NOT.OPTSPLIT) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'HINC_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'HINC_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. ONUCL)) THEN         
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'HONC_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'HONC_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OPTSPLIT .OR. (OCOLD .AND. OWARM)) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'IMLT_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'IMLT_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'RIM_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'RIM_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'WETG_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'WETG_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'DRYG_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'DRYG_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OPTSPLIT) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'CVRC_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'CVRC_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (.NOT.OPTSPLIT .AND. OHAIL) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'WETH_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'WETH_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR)= 'CEDS_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'CEDS_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       !
    ELSE IF (JSV == NSV_LIMA_NR) THEN
       ! Rain drops conc.
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'NEGA_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       IF (OPTSPLIT .AND. OWARM .AND. ORAIN) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'CORR_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'CORR_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OWARM .AND. ORAIN) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'SEDI_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'SEDI_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OPTSPLIT .AND. ORAIN) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'R2C1_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'R2C1_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OPTSPLIT .OR. ORAIN) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'AUTO_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'AUTO_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OPTSPLIT .OR. ORAIN) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'SCBU_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'SCBU_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OPTSPLIT .OR. ORAIN) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'REVA_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'REVA_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OPTSPLIT .OR. ORAIN) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'BRKU_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'BRKU_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. ORAIN .AND. ONUCL)) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'HONR_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'HONR_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'ACC_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'ACC_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'CFRZ_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'CFRZ_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'WETG_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'WETG_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'DRYG_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'DRYG_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'GMLT_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'GMLT_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OPTSPLIT) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'CVRC_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'CVRC_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (.NOT.OPTSPLIT .AND. OHAIL) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'WETH_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'WETH_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (.NOT.OPTSPLIT .AND. OHAIL) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'HMLT_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'HMLT_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       !
    ELSE IF (JSV.GE.NSV_LIMA_CCN_FREE .AND. JSV.LT.(NSV_LIMA_CCN_FREE+NMOD_CCN)) THEN
       ! Free CCN conc.
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'NEGA_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       IF (OWARM .AND. OACTI .AND. NMOD_CCN.GE.1) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'HENU_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'HENU_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OCOLD .AND. ONUCL .AND. OHHONI .AND. NMOD_CCN.GE.1) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'HONH_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'HONH_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR)= 'CEDS_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'CEDS_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       IF (OSCAV) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'SCAV_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'SCAV_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       !
    ELSE IF (JSV.GE.NSV_LIMA_CCN_ACTI .AND. JSV.LT.(NSV_LIMA_CCN_ACTI+NMOD_CCN)) THEN
@@ -3180,109 +3180,109 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN
    ELSE IF (JSV == NSV_LIMA_NI) THEN
       ! Pristine ice crystals conc.
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'NEGA_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       IF (OPTSPLIT .AND. OCOLD .AND. OSNOW) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'CORR_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'CORR_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OSEDI) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'SEDI_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'SEDI_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OCOLD .AND. ONUCL) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'HIND_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'HIND_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OCOLD .AND. ONUCL) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'HINC_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'HINC_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OCOLD .AND. ONUCL .AND. OHHONI .AND. NMOD_CCN.GE.1) THEN         
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'HONH_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'HONH_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. ONUCL)) THEN         
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'HONC_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'HONC_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OPTSPLIT .OR. (OCOLD .AND. OSNOW)) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'CNVI_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'CNVI_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OPTSPLIT .OR. (OCOLD .AND. OSNOW)) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'CNVS_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'CNVS_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OPTSPLIT .OR. (OCOLD .AND. OSNOW)) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'AGGS_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'AGGS_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OPTSPLIT .OR. (OCOLD .AND. OWARM)) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'IMLT_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'IMLT_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'HMS_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'HMS_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'CFRZ_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'CFRZ_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'WETG_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'WETG_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'DRYG_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'DRYG_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. OSNOW)) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'HMG_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'HMG_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       IF (.NOT.OPTSPLIT .AND. OHAIL) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'WETH_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'WETH_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR)= 'CEDS_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'CEDS_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       !
    ELSE IF (JSV.GE.NSV_LIMA_IFN_FREE .AND. JSV.LT.(NSV_LIMA_IFN_FREE+NMOD_IFN)) THEN
       ! Free IFN conc.
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'NEGA_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       IF (OCOLD .AND. ONUCL .AND. (.NOT.OMEYERS)) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'HIND_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'HIND_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR)= 'CEDS_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'CEDS_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       IF (OSCAV) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'SCAV_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'SCAV_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
       !
    ELSE IF (JSV.GE.NSV_LIMA_IFN_NUCL .AND. JSV.LT.(NSV_LIMA_IFN_NUCL+NMOD_IFN)) THEN
@@ -3295,8 +3295,8 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN
       ! Homogeneous freezing of CCN
       IF (OCOLD .AND. ONUCL .AND. OWARM .AND. OHHONI) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR)= 'HONH_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'HONH_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 1
       END IF
 
    END IF
@@ -3308,198 +3308,198 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN
    SELECT CASE(JSV-NSV_ELECBEG+1)
    CASE(1)  ! volumetric charge of water vapor
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'DEPS_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NDEPSQV
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'DEPS_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NDEPSQV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'DEPG_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NDEPGQV
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'DEPG_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NDEPGQV
       IF (LWARM) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR) = 'REVA_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = NREVAQV
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'REVA_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NREVAQV
       END IF
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'DEPI_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NDEPIQV
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'DEPI_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NDEPIQV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'NEUT_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEUTQV
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'NEUT_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NNEUTQV
    CASE(2)  ! volumetric charge of cloud droplets
       IF (LWARM) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR) = 'AUTO_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = NAUTOQC
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'AUTO_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NAUTOQC
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR) = 'ACCR_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = NACCRQC
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'ACCR_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NACCRQC
       END IF
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'RIM_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NRIMQC
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'RIM_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NRIMQC
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'WETG_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NWETGQC
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'WETG_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NWETGQC
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'DRYG_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NDRYGQC
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'DRYG_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NDRYGQC
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'IMLT_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NIMLTQC
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'IMLT_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NIMLTQC
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'BERFI_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NBERFIQC
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'BERFI_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NBERFIQC
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'DEPI_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NDEPIQC
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'DEPI_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NDEPIQC
       IF (LINDUCTIVE) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR) = 'IND_'
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'IND_'
       END IF
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NINDQC
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NINDQC
       IF (LSEDIC) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR) = 'SEDI_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = NSEDIQC
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'SEDI_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NSEDIQC
       END IF
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'NEUT_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEUTQC
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'NEUT_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NNEUTQC
    CASE(3)  ! volumetric charge of rain drops
       IF (LWARM) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR) = 'AUTO_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = NAUTOQR
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'AUTO_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NAUTOQR
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR) = 'ACCR_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = NACCRQR
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'ACCR_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NACCRQR
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR) = 'REVA_'
-         IPROACTV(12+JSV,ILAST_PROC_NBR) = NREVAQR
+         YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'REVA_'
+         IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NREVAQR
       END IF
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'ACC_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NACCQR
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'ACC_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NACCQR
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'CFRZ_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NCFRZQR
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'CFRZ_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NCFRZQR
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'WETG_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NWETGQR
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'WETG_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NWETGQR
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'DRYG_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NDRYGQR
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'DRYG_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NDRYGQR
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'GMLT_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NGMLTQR
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'GMLT_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NGMLTQR
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'SEDI_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NSEDIQR
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'SEDI_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NSEDIQR
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'NEUT_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEUTQR
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'NEUT_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NNEUTQR
    CASE(4)  ! volumetric charge of ice crystals
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'AGGS_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NAGGSQI
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'AGGS_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NAGGSQI
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'AUTS_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NAUTSQI
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'AUTS_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NAUTSQI
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'CFRZ_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NCFRZQI
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'CFRZ_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NCFRZQI
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'WETG_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NWETGQI
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'WETG_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NWETGQI
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'DRYG_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NDRYGQI
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'DRYG_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NDRYGQI
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'IMLT_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NIMLTQI
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'IMLT_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NIMLTQI
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'BERFI_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NBERFIQI
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'BERFI_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NBERFIQI
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'DEPI_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NDEPIQI
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'DEPI_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NDEPIQI
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'NIIS_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNIISQI
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'NIIS_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NNIISQI
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'SEDI_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NSEDIQI
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'SEDI_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NSEDIQI
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'NEUT_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEUTQI
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'NEUT_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NNEUTQI
    CASE(5)  ! volumetric charge of snow
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'DEPS_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NDEPSQS
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'DEPS_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NDEPSQS
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'AGGS_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NAGGSQS
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'AGGS_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NAGGSQS
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'AUTS_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NAUTSQS
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'AUTS_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NAUTSQS
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'RIM_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NRIMQS
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'RIM_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NRIMQS
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'ACC_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NACCQS
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'ACC_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NACCQS
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'CMEL_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NCMELQS
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'CMEL_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NCMELQS
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'WETG_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NWETGQS
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'WETG_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NWETGQS
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'DRYG_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NDRYGQS
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'DRYG_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NDRYGQS
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'NIIS_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNIISQS
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'NIIS_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NNIISQS
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'SEDI_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NSEDIQS
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'SEDI_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NSEDIQS
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'NEUT_'
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'NEUT_'
    CASE(6)  ! volumetric charge of graupel
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'DEPG_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NDEPGQG
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'DEPG_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NDEPGQG
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'RIM_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NRIMQG
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'RIM_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NRIMQG
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'ACC_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NACCQG
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'ACC_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NACCQG
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'CMEL_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NCMELQG
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'CMEL_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NCMELQG
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'CFRZ_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NCFRZQG
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'CFRZ_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NCFRZQG
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'WETG_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NWETGQG
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'WETG_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NWETGQG
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'DRYG_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NDRYGQG
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'DRYG_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NDRYGQG
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'GMLT_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NGMLTQG
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'GMLT_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NGMLTQG
       IF (LINDUCTIVE) THEN
         ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-        YWORK2(12+JSV,ILAST_PROC_NBR) = 'IND_'
-        IPROACTV(12+JSV,ILAST_PROC_NBR) = NINDQG
+        YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'IND_'
+        IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NINDQG
       END IF
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'SEDI_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NSEDIQG
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'SEDI_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NSEDIQG
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'NEUT_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEUTQG
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = 'NEUT_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NNEUTQG
     CASE(7)  ! volumetric charge of hail
 ! add budget for hail volumetric charge
     END SELECT
@@ -3507,21 +3507,21 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN
 ELSE IF (JSV >= NSV_CHEMBEG .AND. JSV <= NSV_CHEMEND) THEN
     ! Chemical Case
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR)= 'CHEM_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NCHEMSV
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'CHEM_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NCHEMSV
     ! other processes
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NADVSV
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'ADV_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NADVSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV
+      YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'NEGA_'
+      IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NNEGASV
  !
   ELSE
     ! other processes
     ! ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-    ! YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
-    ! IPROACTV(12+JSV,ILAST_PROC_NBR) = NADVSV      
+    ! YWORK2(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR)= 'ADV_'
+    ! IPROACTV(NBUDGET_SV1 - 1 + JSV, ILAST_PROC_NBR) = NADVSV
   END IF
   !
   END SUBROUTINE BUDGET_OTHERPROC_SV
@@ -3529,4 +3529,3 @@ ELSE IF (JSV >= NSV_CHEMBEG .AND. JSV <= NSV_CHEMEND) THEN
 !-------------------------------------------------------------------------------
 !
 END SUBROUTINE INI_BUDGET
-
diff --git a/src/MNH/initial_guess.f90 b/src/MNH/initial_guess.f90
index f7d74b6474576d655d59f7a7d6a9d30d128a749a..fe169bfcd27e9c339e4d36952cb1104ffeda269d 100644
--- a/src/MNH/initial_guess.f90
+++ b/src/MNH/initial_guess.f90
@@ -240,63 +240,63 @@ IF (LBU_ENABLE) THEN
     NBUPROCCTR(:)=1
     NBUCTR_ACTV(:)=1
 !
-    IF (LBUDGET_U)   CALL BUDGET (PRUS,1,'INIF_BU_RU')
-    IF (LBUDGET_V)   CALL BUDGET (PRVS,2,'INIF_BU_RV')
-    IF (LBUDGET_W)   CALL BUDGET (PRWS,3,'INIF_BU_RW')
-    IF (LBUDGET_TH)  CALL BUDGET (PRTHS,4,'INIF_BU_RTH')
-    IF (LBUDGET_TKE) CALL BUDGET (PRTKES,5,'INIF_BU_RTKE')
-    IF (LBUDGET_RV)  CALL BUDGET (PRRS(:,:,:,1),6,'INIF_BU_RRV')
-    IF (LBUDGET_RC)  CALL BUDGET (PRRS(:,:,:,2),7,'INIF_BU_RRC')
-    IF (LBUDGET_RR)  CALL BUDGET (PRRS(:,:,:,3),8,'INIF_BU_RRR')
-    IF (LBUDGET_RI)  CALL BUDGET (PRRS(:,:,:,4),9,'INIF_BU_RRI')
-    IF (LBUDGET_RS)  CALL BUDGET (PRRS(:,:,:,5),10,'INIF_BU_RRS')
-    IF (LBUDGET_RG)  CALL BUDGET (PRRS(:,:,:,6),11,'INIF_BU_RRG')
-    IF (LBUDGET_RH)  CALL BUDGET (PRRS(:,:,:,7),12,'INIF_BU_RRH')
+    IF (LBUDGET_U)   CALL BUDGET( PRUS,          NBUDGET_U,   'INIF_BU_RU'   )
+    IF (LBUDGET_V)   CALL BUDGET( PRVS,          NBUDGET_V,   'INIF_BU_RV'   )
+    IF (LBUDGET_W)   CALL BUDGET( PRWS,          NBUDGET_W,   'INIF_BU_RW'   )
+    IF (LBUDGET_TH)  CALL BUDGET( PRTHS,         NBUDGET_TH,  'INIF_BU_RTH'  )
+    IF (LBUDGET_TKE) CALL BUDGET( PRTKES,        NBUDGET_TKE, 'INIF_BU_RTKE' )
+    IF (LBUDGET_RV)  CALL BUDGET( PRRS(:,:,:,1), NBUDGET_RV,  'INIF_BU_RRV'  )
+    IF (LBUDGET_RC)  CALL BUDGET( PRRS(:,:,:,2), NBUDGET_RC,  'INIF_BU_RRC'  )
+    IF (LBUDGET_RR)  CALL BUDGET( PRRS(:,:,:,3), NBUDGET_RR,  'INIF_BU_RRR'  )
+    IF (LBUDGET_RI)  CALL BUDGET( PRRS(:,:,:,4), NBUDGET_RI,  'INIF_BU_RRI'  )
+    IF (LBUDGET_RS)  CALL BUDGET( PRRS(:,:,:,5), NBUDGET_RS,  'INIF_BU_RRS'  )
+    IF (LBUDGET_RG)  CALL BUDGET( PRRS(:,:,:,6), NBUDGET_RG,  'INIF_BU_RRG'  )
+    IF (LBUDGET_RH)  CALL BUDGET( PRRS(:,:,:,7), NBUDGET_RH,  'INIF_BU_RRH'  )
     DO JSV=1,KSV
-      IF (LBUDGET_SV)  CALL BUDGET (PRSVS(:,:,:,JSV),JSV+12,'INIF_BU_RSV')
+      IF (LBUDGET_SV) CALL BUDGET( PRSVS(:,:,:,JSV), JSV + NBUDGET_SV1 - 1, 'INIF_BU_RSV' )
     END DO
 !
     NBUPROCCTR(:)=2
     NBUCTR_ACTV(:)=2
 !
-    IF (LBUDGET_U)   CALL BUDGET (PRUS,1,'ENDF_BU_RU')
-    IF (LBUDGET_V)   CALL BUDGET (PRVS,2,'ENDF_BU_RV')
-    IF (LBUDGET_W)   CALL BUDGET (PRWS,3,'ENDF_BU_RW')
-    IF (LBUDGET_TH)  CALL BUDGET (PRTHS,4,'ENDF_BU_RTH')
-    IF (LBUDGET_TKE) CALL BUDGET (PRTKES,5,'ENDF_BU_RTKE')
-    IF (LBUDGET_RV)  CALL BUDGET (PRRS(:,:,:,1),6,'ENDF_BU_RRV')
-    IF (LBUDGET_RC)  CALL BUDGET (PRRS(:,:,:,2),7,'ENDF_BU_RRC')
-    IF (LBUDGET_RR)  CALL BUDGET (PRRS(:,:,:,3),8,'ENDF_BU_RRR')
-    IF (LBUDGET_RI)  CALL BUDGET (PRRS(:,:,:,4),9,'ENDF_BU_RRI')
-    IF (LBUDGET_RS)  CALL BUDGET (PRRS(:,:,:,5),10,'ENDF_BU_RRS')
-    IF (LBUDGET_RG)  CALL BUDGET (PRRS(:,:,:,6),11,'ENDF_BU_RRG')
-    IF (LBUDGET_RH)  CALL BUDGET (PRRS(:,:,:,7),12,'ENDF_BU_RRH')
+    IF (LBUDGET_U)   CALL BUDGET( PRUS,          NBUDGET_U,   'ENDF_BU_RU'   )
+    IF (LBUDGET_V)   CALL BUDGET( PRVS,          NBUDGET_V,   'ENDF_BU_RV'   )
+    IF (LBUDGET_W)   CALL BUDGET( PRWS,          NBUDGET_W,   'ENDF_BU_RW'   )
+    IF (LBUDGET_TH)  CALL BUDGET( PRTHS,         NBUDGET_TH,  'ENDF_BU_RTH'  )
+    IF (LBUDGET_TKE) CALL BUDGET( PRTKES,        NBUDGET_TKE, 'ENDF_BU_RTKE' )
+    IF (LBUDGET_RV)  CALL BUDGET( PRRS(:,:,:,1), NBUDGET_RV,  'ENDF_BU_RRV'  )
+    IF (LBUDGET_RC)  CALL BUDGET( PRRS(:,:,:,2), NBUDGET_RC,  'ENDF_BU_RRC'  )
+    IF (LBUDGET_RR)  CALL BUDGET( PRRS(:,:,:,3), NBUDGET_RR,  'ENDF_BU_RRR'  )
+    IF (LBUDGET_RI)  CALL BUDGET( PRRS(:,:,:,4), NBUDGET_RI,  'ENDF_BU_RRI'  )
+    IF (LBUDGET_RS)  CALL BUDGET( PRRS(:,:,:,5), NBUDGET_RS,  'ENDF_BU_RRS'  )
+    IF (LBUDGET_RG)  CALL BUDGET( PRRS(:,:,:,6), NBUDGET_RG,  'ENDF_BU_RRG'  )
+    IF (LBUDGET_RH)  CALL BUDGET( PRRS(:,:,:,7), NBUDGET_RH,  'ENDF_BU_RRH'  )
     DO JSV=1,KSV
-      IF (LBUDGET_SV)  CALL BUDGET (PRSVS(:,:,:,JSV),JSV+12,'ENDF_BU_RSV')
+      IF (LBUDGET_SV) CALL BUDGET( PRSVS(:,:,:,JSV), JSV + NBUDGET_SV1 - 1, 'ENDF_BU_RSV' )
     END DO
 !
     LBU_BEG=.FALSE.
-  END IF    
+  END IF
 !
   NBUPROCCTR(:)=4
   NBUCTR_ACTV(:)=4
 !
 !  stores the Asselin source term
 !
-  IF (LBUDGET_U)   CALL BUDGET (PRUS,1,'ASSE_BU_RU')
-  IF (LBUDGET_V)   CALL BUDGET (PRVS,2,'ASSE_BU_RV')
-  IF (LBUDGET_W)   CALL BUDGET (PRWS,3,'ASSE_BU_RW')
-  IF (LBUDGET_TH)  CALL BUDGET (PRTHS,4,'ASSE_BU_RTH')
-  IF (LBUDGET_TKE) CALL BUDGET (PRTKES,5,'ASSE_BU_RTKE')
-  IF (LBUDGET_RV)  CALL BUDGET (PRRS(:,:,:,1),6,'ASSE_BU_RRV')
-  IF (LBUDGET_RC)  CALL BUDGET (PRRS(:,:,:,2),7,'ASSE_BU_RRC')
-  IF (LBUDGET_RR)  CALL BUDGET (PRRS(:,:,:,3),8,'ASSE_BU_RRR')
-  IF (LBUDGET_RI)  CALL BUDGET (PRRS(:,:,:,4),9,'ASSE_BU_RRI')
-  IF (LBUDGET_RS)  CALL BUDGET (PRRS(:,:,:,5),10,'ASSE_BU_RRS')
-  IF (LBUDGET_RG)  CALL BUDGET (PRRS(:,:,:,6),11,'ASSE_BU_RRG')
-  IF (LBUDGET_RH)  CALL BUDGET (PRRS(:,:,:,7),12,'ASSE_BU_RRH')
+  IF (LBUDGET_U)   CALL BUDGET( PRUS,          NBUDGET_U,   'ASSE_BU_RU'   )
+  IF (LBUDGET_V)   CALL BUDGET( PRVS,          NBUDGET_V,   'ASSE_BU_RV'   )
+  IF (LBUDGET_W)   CALL BUDGET( PRWS,          NBUDGET_W,   'ASSE_BU_RW'   )
+  IF (LBUDGET_TH)  CALL BUDGET( PRTHS,         NBUDGET_TH,  'ASSE_BU_RTH'  )
+  IF (LBUDGET_TKE) CALL BUDGET( PRTKES,        NBUDGET_TKE, 'ASSE_BU_RTKE' )
+  IF (LBUDGET_RV)  CALL BUDGET( PRRS(:,:,:,1), NBUDGET_RV,  'ASSE_BU_RRV'  )
+  IF (LBUDGET_RC)  CALL BUDGET( PRRS(:,:,:,2), NBUDGET_RC,  'ASSE_BU_RRC'  )
+  IF (LBUDGET_RR)  CALL BUDGET( PRRS(:,:,:,3), NBUDGET_RR,  'ASSE_BU_RRR'  )
+  IF (LBUDGET_RI)  CALL BUDGET( PRRS(:,:,:,4), NBUDGET_RI,  'ASSE_BU_RRI'  )
+  IF (LBUDGET_RS)  CALL BUDGET( PRRS(:,:,:,5), NBUDGET_RS,  'ASSE_BU_RRS'  )
+  IF (LBUDGET_RG)  CALL BUDGET( PRRS(:,:,:,6), NBUDGET_RG,  'ASSE_BU_RRG'  )
+  IF (LBUDGET_RH)  CALL BUDGET( PRRS(:,:,:,7), NBUDGET_RH,  'ASSE_BU_RRH'  )
   DO JSV=1,KSV
-    IF (LBUDGET_SV)  CALL BUDGET (PRSVS(:,:,:,JSV),JSV+12,'ASSE_BU_RSV')
+    IF (LBUDGET_SV) CALL BUDGET( PRSVS(:,:,:,JSV), JSV + NBUDGET_SV1 - 1, 'ASSE_BU_RSV' )
   END DO
 END IF
 !
diff --git a/src/MNH/modd_budget.f90 b/src/MNH/modd_budget.f90
index 14387e9f096dfadc2fa95b186c91d1bf6e299cfe..85fd9295bea449b2a57a47dfe866e77572cdab38 100644
--- a/src/MNH/modd_budget.f90
+++ b/src/MNH/modd_budget.f90
@@ -1,7 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1995-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 MODD_BUDGET
 !     ##################
@@ -10,8 +11,8 @@
 !!
 !!    PURPOSE
 !!    -------
-!       The purpose of this declarative module is to specify  the budget 
-!     variables.     
+!       The purpose of this declarative module is to specify  the budget
+!     variables
 !
 !!
 !!**  IMPLICIT ARGUMENTS
@@ -41,15 +42,32 @@
 !!      C. Barthe            /16    add budget terms for LIMA
 !!      C. LAc          10/2016 add droplets deposition
 !!      S. Riette       11/2016  New budgets for ICE3/ICE4
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 19/07/2019: parameters to identify budget number
 !-------------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
 !             ------------
 USE MODD_PARAMETERS, ONLY :JPBUMAX, JPBUPROMAX, NMNHNAMELGTMAX
-!
-IMPLICIT NONE
-!
+
+implicit none
+
+public
+
+integer, parameter :: NBUDGET_U   = 1  ! Reference number for budget of RhoJu  and/or LES budgets with u
+integer, parameter :: NBUDGET_V   = 2  ! Reference number for budget of RhoJv  and/or LES budgets with u
+integer, parameter :: NBUDGET_W   = 3  ! Reference number for budget of RhoJw  and/or LES budgets with u
+integer, parameter :: NBUDGET_TH  = 4  ! Reference number for budget of RhoJTh and/or LES budgets with th
+integer, parameter :: NBUDGET_TKE = 5  ! Reference number for budget of RhoJTke and/or LES budgets with Tke
+integer, parameter :: NBUDGET_RV  = 6  ! Reference number for budget of RhoJrv and/or LES budgets with rv
+integer, parameter :: NBUDGET_RC  = 7  ! Reference number for budget of RhoJrc and/or LES budgets with rc
+integer, parameter :: NBUDGET_RR  = 8  ! Reference number for budget of RhoJrr and/or LES budgets with rr
+integer, parameter :: NBUDGET_RI  = 9  ! Reference number for budget of RhoJri and/or LES budgets with ri
+integer, parameter :: NBUDGET_RS  = 10 ! Reference number for budget of RhoJrs and/or LES budgets with rs
+integer, parameter :: NBUDGET_RG  = 11 ! Reference number for budget of RhoJrg and/or LES budgets with rg
+integer, parameter :: NBUDGET_RH  = 12 ! Reference number for budget of RhoJrh and/or LES budgets with rh
+integer, parameter :: NBUDGET_SV1 = 13 ! Reference number for 1st budget of RhoJsv and/or LES budgets with sv
+
 !                       General variables
 LOGICAL, SAVE :: LBU_ENABLE
 !