diff --git a/A-INSTALL b/A-INSTALL
index e9fcf06f82d72f0ce656fbaac3f47b67f067bbe4..b51c893bc330a00d0906ccdf56e02bc4fd52829b 100644
--- a/A-INSTALL
+++ b/A-INSTALL
@@ -1,8 +1,8 @@
 #
 # Version of PACKAGE MESONH "Open distribution"
-#              PACK-MNH-V5-4-2
-#              DATE : 03/04/2019
-#              VERSION : MESONH MASDEV5_4 + BUG-2
+#              PACK-MNH-V5-4-3
+#              DATE : 30/03/2020
+#              VERSION : MESONH MASDEV5_4 + BUG-3
 #
 #  MAP
 #
@@ -13,7 +13,7 @@
 #      III) COMPILING/INSTALLING THE MESONH PACKAGE ON YOUR LINUX COMPUTER 
 #       IV) RUN SOME "SMALL KTEST" EXAMPLES
 #        V) RECOMPILING YOUR 'OWN' SOURCES ONLY 
-#       VI) COMPILING/INSTALLING MESONH ON GENCI & ECMWF & METEO COMPUTERS
+#       VI) COMPILING/INSTALLING MESONH ON GENCI & ECMWF & METEO & CALMIP COMPUTERS
 #      VII) "SCANDOLLAR" = SCRIPTING YOUR OWN PROCEDURES 
 #
 #     VIII) TROUBLE-SHOOTING
@@ -80,14 +80,14 @@
 #
 # or directly
 #
-# http://mesonh.aero.obs-mip.fr/mesonh/dir_open/dir_MESONH/MNH-V5-4-2.tar.gz
+# http://mesonh.aero.obs-mip.fr/mesonh/dir_open/dir_MESONH/MNH-V5-4-3.tar.gz
 #
-# Then untar the file "MNH-V5-4-2.tar.gz" where you want to.
+# Then untar the file "MNH-V5-4-3.tar.gz" where you want to.
 # For example, in your home directory:
 #
 
 cd ~
-tar xvfz MNH-V5-4-2.tar.gz
+tar xvfz MNH-V5-4-3.tar.gz
 
 #
 #  Process now to the chapter to configure the MesoNH package.
@@ -167,10 +167,10 @@ git config --global http.sslverify false
 # Finally you can clone the Meso-NH Git repository with the following command:
 #
 
-git lfs clone anongit@anongit_mesonh:/gitrepos/MNH-git_open_source-lfs.git -b MNH-54-branch MNH-V5-4-2
+git lfs clone anongit@anongit_mesonh:/gitrepos/MNH-git_open_source-lfs.git -b MNH-54-branch MNH-V5-4-3
 
 #
-# that will create the MNH-V5-4-2 directory containing a clone (copy) of the
+# that will create the MNH-V5-4-3 directory containing a clone (copy) of the
 # Meso-NH package on the remote developpement branch MNH-54-branch
 #
 #
@@ -180,34 +180,34 @@ git lfs clone anongit@anongit_mesonh:/gitrepos/MNH-git_open_source-lfs.git -b MN
 # Once the repository is cloned, it's better for you to checkout your own branch
 # (by default, you are on HEAD of the MNH-54-branch development branch  ).
 #
-# To create your local branch corresponding to the V5-4-2 version, type:
+# To create your local branch corresponding to the V5-4-3 version, type:
 #
 
-cd MNH-V5-4-2
-git checkout -b MYB-MNH-V5-4-2 PACK-MNH-V5-4-2
+cd MNH-V5-4-3
+git checkout -b MYB-MNH-V5-4-3 PACK-MNH-V5-4-3
 
 #
-# MYB-MNH-V5-4-2 is the name of the local branch you created
+# MYB-MNH-V5-4-3 is the name of the local branch you created
 # and
-# PACK-MNH-V5-4-2 is the remote/origin tag on which it is based.
+# PACK-MNH-V5-4-3 is the remote/origin tag on which it is based.
 #
 # The advantage of this way of downloading the package is that in the future
 # you could check/update quickly differences with the new version of the
 # package without having to download entirely the full package.
 #
-#  Suppose that a new version, for example "PACK-MNH-V5-4-2", is announced.
+#  Suppose that a new version, for example "PACK-MNH-V5-4-4", is announced.
 #
 #  To see the differences with your working copy, do:
 #
 
 git fetch
-git diff HEAD PACK-MNH-V5-4-2
+git diff HEAD PACK-MNH-V5-4-4
 
 #
 #  To go to the new version, you can, for example, create a new local branch:
 #
 
-git checkout -b MYB-MNH-V5-4-2 PACK-MNH-V5-4-2
+git checkout -b MYB-MNH-V5-4-4 PACK-MNH-V5-4-4
 
 #
 # At any time, you can also check for "uptodate" changes in the Git branch
@@ -253,7 +253,7 @@ git clone anongit@anongit_mesonh:/gitrepos/MNH-DOC.git
 #    use the "./configure" script like this 
 #
 
-cd ~/MNH-V5-4-2/src
+cd ~/MNH-V5-4-3/src
 ./configure
 . ../conf/profile_mesonh
 
@@ -304,7 +304,7 @@ export OPTLEVEL=O2         # Compile in O2, 4 times faster then DEBUG, but less
 
 #    and then source/load the new generate file
 
-. ../conf/profile_mesonh.LXifort.MNH-V5-4-2.MPIAUTO.O2
+. ../conf/profile_mesonh.LXifort.MNH-V5-4-3.MPIAUTO.O2
 
 #
 #  REM: 
@@ -329,7 +329,7 @@ export OPTLEVEL=O2         # Compile in O2, 4 times faster then DEBUG, but less
 # go to the directory  "src"
 #
 
-cd  ~/MNH-V5-4-2/src
+cd  ~/MNH-V5-4-3/src
 
 #
 # if you have not already configured your MESONH environment
@@ -535,8 +535,8 @@ make examples
 
 ^L
 #
-#   VI) COMPILING/INSTALLING ON GENCI & ECMWF & METEO COMPUTERS
-#   ===========================================================
+#   VI) COMPILING/INSTALLING ON GENCI & ECMWF & METEO & CALMIP COMPUTERS
+#   ====================================================================
 #
 #   After downloading "exactly" like on "any standalone PC" 
 #   run the "./configure" command :
@@ -547,51 +547,83 @@ make examples
 #
 #  - If you do not have sufficient space in your "$HOME" directory,
 #    install the whole package directly on the ${WORKDIR}
+#    /!\  the name of the WORKDIR differ in the differents computer center
+#    read the doc , most of them manage disk space throw 'multi-projet' with only one unique login . 
 #
 #   WARNING :
 #   ======== 
 #    - Think to do a backup of your installation 
-#    - This space is no more "purged" but a "crash disk" could/will
+#    - This space is no "purged" but a "crash disk" could/will
 #      probably occur !!!
 # 
 
 cd $WORKDIR
-cd MNH-V5-4-2/src
+cd MNH-V5-4-3/src
 
 ./configure
  
 #   
 #   Due to limitation in time & memory on interactive connection 
-#   then compile the MESONH PACKAGE in batch mode with the different "job_make_mesonh*" files
+#   in some computer you have to compile the MESONH PACKAGE in batch mode with the different "job_make_mesonh*" files
 #   
 #   at IDRIS :
 #   ---------
 #
 
-#   - On ADA ( IBM/x3750 ) with :
+#   - On JEAN-ZAY ( HPE ) the compilation is only possible in interactive :
 
-llsubmit job_make_mesonh_IBM_ada
+cd MNH-V5-4-3/src
+. ../conf/profile_mesonh-LXifort-R8I4-MNH-V5-4-3-MPIINTEL-O2
+make -j16 |& tee error$XYZ
+make installmaster
 
-#
-#
-#   - On TURING (IBM BG/Q ) : 
+#   - to run the test case examples  run
 
-llsubmit job_make_mesonh_BGQ
+sbatch -A {your_projet}@cpu job_make_examples_BullX_jeanzay
 
 #
+#   
+#   at CINES on OCCIGEN (BULLX)  :
+#   -------------------------------------------------------
+# 
+#   - install the PACKAGE in your $HOME ( default 50Go  of quota )
+#   - Compile in interactive mode ( see IDRIS )
 #
-#   BACKUP : /!\ backup your work on "ergon"
+#   - to run the test case examples  run
+
+sbatch job_make_examples_BullX_occigen
+
 #
 #   
-#   at CINES on JADE( SGI/ICE ) , OCCIGEN not tested yet  :
+#   at TGCC on IRENE (BULLX)  :
 #   -------------------------------------------------------
-# 
-#   - install the PACKAGE in your "/store/${USER}" directory 
-#   - you could compile in interactive mode
 #
-#    BACKUP : /!\ backup your work on "/data/${USER}"
+#   At TGCC , you have two architectures accessible throw 2 differents frontals
+#   but with a commun disk space , connect to : 
+#
+#   - ssh irene-fr  : for Intel SkyLake/KNL processors
+#      On Intel processors the MPI use is OPENMPI/2.0.4
+#      the configure will generate a
+#      profile_mesonh-LXifort-R8I4-MNH-V5-4-3-MPIAUTO-O2
+#
+#   - ssh irene-amd : for AMD , processors
+#      On AMD processors the MPI use is OPENMPI/4.02
+#      the configure will generate a
+#      profile_mesonh-LXifort-R8I4-MNH-V5-4-3-AMD-MPIAUTO-O2
 # 
+#   - install the PACKAGE in your $CCCHOME ( default 20Go  of quota )
+#   - Compile in interactive mode ( see IDRIS )
+#
+
+#   - to run the test case examples  run
+#
+# On intel Skylake
+ccc_msub job_make_examples_BullX_irene
+# On intel Knl 
+ccc_msub -q knl job_make_examples_BullX_irene
 
+# On intel AMD 
+ccc_msub job_make_examples_BullX_irene_AMD
 
 # 
 #   at ECMWF on cca ( CRAY/XC30 ) :
@@ -600,45 +632,32 @@ llsubmit job_make_mesonh_BGQ
 #   - to install MESONH go to your $PERM directory
 #     if you need more disk space than allowed for 'standard' user 
 #     Ask to Dominique Lucas, look this email :
-#
-#    http://mesonh.aero.obs-mip.fr/cgi-bin/mesonh_interne/mail2html.cgi?file=2009_09_24_15:31:54
+#    http://mesonh.aero.obs-mip.fr/mesonh/dir_interne/dir_mail_mesonh_cnrm/dir_mail/2009_09_24_15:31:54.eml
 #
 #   - for the compilation use :
 
 qsub job_make_mesonh_CRAY_cca
 
-#
-# REM : On CRAY computer cca , the default compiler is the CRAY one = crayftn .
-#      I you have trouble with this one , you could compile with the Intel/ifort one .
-#      Use the ifort one do :
-
-export ARCH=LXifort
-./configure
-
-...
-
-creation du fichier -->  ../conf/profile_mesonh-LXifortI4-MNH-V5-4-2-MPICRAY-O2
-
-# And for the compilation & example job , switch the ARCH variable to LXifort :
+#   - to run the test case examples  run
 
-vi  job_make_mesonh_CRAY_cca(job_make_examples_CRAY_cca)
+qsub  job_make_examples_CRAY_cca
 
-ARCH=LXifort
-#ARCH=LXcray # this is the default one
-. ../conf/profile_mesonh-${ARCH}I4-MNH-V5-4-2-MPICRAY-O2
+#
+# REM : On CRAY computer cca , I switch the default compiler to the INTEL one .
+#      Some trouble with the is the CRAY one = crayftn .
 
 #
 #   - At Meteo-France DSI on beaufix (or prolix)
 #
 #  to install the whole package on your "$HOME" directory
-#  untar the file "PACK-MNH-V5-4-2.tar.gz" from its location :
+#  untar the file "MNH-V5-4-3.tar.gz" from its location :
 
 cd ~
-tar xvf $MESONH/pack_MNH-V5-4-2.tar.gz
+tar xvf $MESONH/MNH-V5-4-3.tar.gz
 
 #  run the "./configure" command :
 
-cd MNH-V5-4-2/src
+cd MNH-V5-4-3/src
 ./configure
 
 #
@@ -671,44 +690,18 @@ export VER_USER=MY_MODIF
 
 sbatch  job_make_mesonh_user_BullX
 
-#
-#   EXAMPLES ON GENCI & ECMWF PLATFORMS & METEO COMPUTERS
-#   =====================================================
-#
-#  - At IDRIS
-#
-
-# on ADA
-
-llsubmit job_make_examples_IBM_ada
-
-#on TURING
-
-llsubmit job_make_examples_BGQ
-
-#
-#   - At CINES on JADE( SGI/ICE ) :
-#
-# load ".profile_mesonh..." & set the variables :
- 
-export MONORUN="mpirun -np 1"
-export MPIRUN="mpirun -np 4 " 
-  
-# and run with 
-
-make examples
 
 #
-#   - At ECMWF on cca
-#
-
-llsubmit  job_make_examples_CRAY_cca
-
-#
-#   - At Meteo-France DSI on beaufix or prolix
+#   
+#   at CALMIP on OLYMPE (BULLX)  :
+#   -------------------------------------------------------
+# 
+#   - install the PACKAGE in your /tmpdir/$USER
+#   - Compile in interactive mode ( see IDRIS )
 #
+#   - to run the test case examples  run
 
-sbatch   job_make_examples_BullX
+sbatch job_make_examples_BullX_olympe
 
 #
 # That's all for the basic INSTALLATION of the "MESONH PACKAGE"
@@ -764,7 +757,7 @@ scandollar
 
 ## OUTPUT ::
 
->#  read default config file :: --->  CONF_DOLLAR=/home/escj/DEV64/PACK-MNH-V5-4-2/conf/post/confdollar_aeropc_default
+>#  read default config file :: --->  CONF_DOLLAR=/home/escj/DEV64/PACK-MNH-V5-4-3/conf/post/confdollar_aeropc_default
 >#
 >#  read    user config file :: --->  CONFIG=confdollar
 >#
@@ -786,7 +779,7 @@ scandollar 0*
 
 ## OUTPUT ::
 >#
->#  read default config file :: --->  CONF_DOLLAR=/home/escj/DEV64/PACK-MNH-V5-4-2/conf/post/confdollar_aeropc_default
+>#  read default config file :: --->  CONF_DOLLAR=/home/escj/DEV64/PACK-MNH-V5-4-3/conf/post/confdollar_aeropc_default
 >#
 >#  read    user config file :: --->  CONFIG=confdollar
 >#
@@ -860,22 +853,22 @@ cp -R  007_16janvier_scandollar /.../your_directory
 #
 # use this "profile_mesonh" :
 
-.  /home/rech/mnh/rmnh007/DEV/MNH-V5-4-2/conf/profile_mesonh-SX8-MNH-V5-4-2-MPIAUTO-O4
+.  /home/rech/mnh/rmnh007/DEV/MNH-V5-4-3/conf/profile_mesonh-SX8-MNH-V5-4-3-MPIAUTO-O4
 
 # And the examples are here ( link to my $WORKDIR in actually )  
 
-/home/rech/mnh/rmnh007/DEV/MNH-V5-4-2/MY_RUN/KTEST/007_16janvier_scandollar
+/home/rech/mnh/rmnh007/DEV/MNH-V5-4-3/MY_RUN/KTEST/007_16janvier_scandollar
 
 #
 #  On vargas
 #  ---------
 #  use this "profile_mesonh" :
 
-. /workgpfs/rech/mnh/rmnh007/DEV/MNH-V5-4-2/conf/profile_mesonh-AIX64-MNH-V5-4-2-MPIAUTO-O2
+. /workgpfs/rech/mnh/rmnh007/DEV/MNH-V5-4-3/conf/profile_mesonh-AIX64-MNH-V5-4-3-MPIAUTO-O2
 
 # and examples here :
 
-/workgpfs/rech/mnh/rmnh007/DEV/MNH-V5-4-2/MY_RUN/KTEST/007_16janvier_scandollar
+/workgpfs/rech/mnh/rmnh007/DEV/MNH-V5-4-3/MY_RUN/KTEST/007_16janvier_scandollar
 
 # 
 #  - At CINES on JADE :
@@ -883,11 +876,11 @@ cp -R  007_16janvier_scandollar /.../your_directory
 #
 # use 
 
-. /work/escobar/DEV/MNH-V5-4-2/conf/profile_mesonh-LXifort-MNH-V5-4-2-MPIICE-O2
+. /work/escobar/DEV/MNH-V5-4-3/conf/profile_mesonh-LXifort-MNH-V5-4-3-MPIICE-O2
 
 # and the exemples
 
-/work/escobar/DEV/MNH-V5-4-2/MY_RUN/KTEST/007_16janvier_scandollar
+/work/escobar/DEV/MNH-V5-4-3/MY_RUN/KTEST/007_16janvier_scandollar
 
 #
 #  - At ECMWF on cxa :
@@ -895,11 +888,11 @@ cp -R  007_16janvier_scandollar /.../your_directory
 #
 # use
 
-. /c1a/ms_perm/au5/MNH-V5-4-2/conf/profile_mesonh-AIX64-MNH-V5-4-2-MPIAUTO-O2
+. /c1a/ms_perm/au5/MNH-V5-4-3/conf/profile_mesonh-AIX64-MNH-V5-4-3-MPIAUTO-O2
 
 # and the examples
 
-/c1a/ms_perm/au5/MNH-V5-4-2/MY_RUN/KTEST/007_16janvier_scandollar
+/c1a/ms_perm/au5/MNH-V5-4-3/MY_RUN/KTEST/007_16janvier_scandollar
 
 
 #
diff --git a/src/LIB/SURCOUCHE/src/modd_argslist_ll.f90 b/src/LIB/SURCOUCHE/src/modd_argslist_ll.f90
index f21707ecc22db75778043e6484f0f0b23911fd5b..5eafaed2757a253dc6171b6c287df64b80f1ee17 100644
--- a/src/LIB/SURCOUCHE/src/modd_argslist_ll.f90
+++ b/src/LIB/SURCOUCHE/src/modd_argslist_ll.f90
@@ -3,6 +3,7 @@
 !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_ARGSLIST_ll
 !      #######################
@@ -37,15 +38,15 @@
 !
 !-------------------------------------------------------------------------------
 !
- USE MODD_STRUCTURE2_ll, ONLY : HALO2_ll
+USE MODD_STRUCTURE2_ll, ONLY: HALO2_ll
 
 implicit none
 
 integer,parameter :: NLISTTYPENAMESIZE = 32
 
-!     ############
-      TYPE LIST_ll
-!     ############
+!###########
+TYPE LIST_ll
+!###########
 !
 !!****  *Type LIST_ll* -
 !
@@ -57,7 +58,7 @@ integer,parameter :: NLISTTYPENAMESIZE = 32
 !
 !-------------------------------------------------------------------------------
 !
-  INTEGER :: NCARD = -1
+  INTEGER :: NCARD = 0
   LOGICAL :: L1D = .false.
   LOGICAL :: L2D = .false.
   LOGICAL :: L3D = .false.
@@ -68,15 +69,15 @@ integer,parameter :: NLISTTYPENAMESIZE = 32
   REAL, DIMENSION(:,:),   POINTER :: ARRAY2D => null()
   REAL, DIMENSION(:,:,:), POINTER :: ARRAY3D => null()
 !
-  TYPE(LIST_ll), POINTER :: NEXT => null()
+  TYPE(LIST_ll),          POINTER :: NEXT => null()
 !
-      END TYPE LIST_ll
+END TYPE LIST_ll
 !
 !-------------------------------------------------------------------------------
 !
-!     ##############
-      TYPE LIST1D_ll
-!     ##############
+!#############
+TYPE LIST1D_ll
+!#############
 !
 !!****  *Type LIST1D_ll* -
 !
@@ -87,22 +88,22 @@ integer,parameter :: NLISTTYPENAMESIZE = 32
 !
 !-------------------------------------------------------------------------------
 !
-  INTEGER :: NCARD = -1
+  INTEGER :: NCARD = 0
 
   character(len=NLISTTYPENAMESIZE) :: cname = 'UNKNOWN'
 
   REAL, DIMENSION(:), POINTER :: ARRAY1D => null()
   CHARACTER(LEN=1) :: CDIR = ' '
 !
-  TYPE(LIST1D_ll), POINTER :: NEXT => null()
+  TYPE(LIST1D_ll),    POINTER :: NEXT => null()
 !
-      END TYPE LIST1D_ll
+END TYPE LIST1D_ll
 !
 !-------------------------------------------------------------------------------
 !
-!     #################
-      TYPE HALO2LIST_ll
-!     #################
+!################
+TYPE HALO2LIST_ll
+!################
 !
 !!****  *Type HALO2LIST_ll* -
 !
@@ -113,13 +114,13 @@ integer,parameter :: NLISTTYPENAMESIZE = 32
 !
 !-------------------------------------------------------------------------------
 !
-  INTEGER :: NCARD = -1
+  INTEGER :: NCARD = 0
 !
-  TYPE(HALO2_ll), POINTER :: HALO2 => null()
+  TYPE(HALO2_ll),     POINTER :: HALO2 => null()
 !
   TYPE(HALO2LIST_ll), POINTER :: NEXT => null()
 !
-      END TYPE HALO2LIST_ll
+END TYPE HALO2LIST_ll
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/LIB/SURCOUCHE/src/modd_structure2_ll.f90 b/src/LIB/SURCOUCHE/src/modd_structure2_ll.f90
index 5a823e55df4954f4a670256b39e8be6d48cfb296..3b04ba768724c80140e10aa1af7a7d4071651e1d 100644
--- a/src/LIB/SURCOUCHE/src/modd_structure2_ll.f90
+++ b/src/LIB/SURCOUCHE/src/modd_structure2_ll.f90
@@ -1,20 +1,11 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1998-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 CVS information
-!-----------------------------------------------------------------
-! $Source$
-! $Name$ 
-! $Revision$ 
-! $Date$
-!-----------------------------------------------------------------
-!-----------------------------------------------------------------
-
-!      ########################
-       MODULE MODD_STRUCTURE2_ll
-!      ########################
+!########################
+MODULE MODD_STRUCTURE2_ll
+!########################
 !
 !!****  *MODD_PARALLEL2* Contains the variables to treat
 !                        the second layer of the halo
@@ -46,18 +37,20 @@
 !
 !-------------------------------------------------------------------------------
 !
-!     #############
-      TYPE HALO2_ll
-!     #############
+implicit none
+!
+!############
+TYPE HALO2_ll
+!############
 !
 ! Type for the second layer of the halo
 !
-  REAL, DIMENSION(:,:), POINTER :: WEST
-  REAL, DIMENSION(:,:), POINTER :: EAST
-  REAL, DIMENSION(:,:), POINTER :: NORTH
-  REAL, DIMENSION(:,:), POINTER :: SOUTH
+  REAL, DIMENSION(:,:), POINTER :: WEST  => NULL()
+  REAL, DIMENSION(:,:), POINTER :: EAST  => NULL()
+  REAL, DIMENSION(:,:), POINTER :: NORTH => NULL()
+  REAL, DIMENSION(:,:), POINTER :: SOUTH => NULL()
 !
-      END TYPE HALO2_ll
+END TYPE HALO2_ll
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/LIB/SURCOUCHE/src/modd_structure_ll.f90 b/src/LIB/SURCOUCHE/src/modd_structure_ll.f90
index 570dcba7e58e2f18d20d042d9a67b977355d11f6..f2ce9fe5c21b8c436db2714c36eec256cf8beb8e 100644
--- a/src/LIB/SURCOUCHE/src/modd_structure_ll.f90
+++ b/src/LIB/SURCOUCHE/src/modd_structure_ll.f90
@@ -1,11 +1,11 @@
-!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1998-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_STRUCTURE_ll
-!      ########################
+!#######################
+MODULE MODD_STRUCTURE_ll
+!#######################
 !
 !!****  *MODD_STRUCTURE_lll* - declaration of parallel structure
 !
@@ -45,10 +45,12 @@
 !
 !-------------------------------------------------------------------------------
 !
-  USE MODD_ARGSLIST_ll,   ONLY : LIST_ll
-  USE MODD_PARAMETERS,    ONLY : NNEGUNDEF
-  USE MODD_PARAMETERS_ll, ONLY : NMAXRIM
-!
+USE MODD_ARGSLIST_ll,   ONLY : LIST_ll
+USE MODD_PARAMETERS,    ONLY : NNEGUNDEF
+USE MODD_PARAMETERS_ll, ONLY : NMAXRIM
+
+implicit none
+
 !-------------------------------------------------------------------------------
 !
 ! Routines for allocation of structured types
diff --git a/src/MNH/advection_metsv.f90 b/src/MNH/advection_metsv.f90
index b42f0e8b2c7d4ea0531a45fe63350bd66b10e2fb..b29d67538409329d43280254a33d280f491db0ee 100644
--- a/src/MNH/advection_metsv.f90
+++ b/src/MNH/advection_metsv.f90
@@ -133,12 +133,13 @@ END MODULE MODI_ADVECTION_METSV
 !!                  04/2016  (C.Lac)       : correction of negativity for KHKO
 !!                  10/2016  (C.Lac) Correction on the flag for Strang splitting
 !!                                  to insure reproducibility between START and RESTA
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!!                  07/2017  (V. Vionnet)  : add advection of 2D variables at
-!!                                      the surface for the blowing snow scheme
-!!                  03/2020 (B.Vie) : LIMA negativity checks after turbulence, advection and
-!!                                    microphysics budgets
+!  P. Wautelet 05/2016-04/2018: new data structures and calls for I/O
+!  V. Vionnet     07/2017: add advection of 2D variables at the surface for the blowing snow scheme
+!  B. Vie         03/2020: LIMA negativity checks after turbulence, advection and microphysics budgets
 !  P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine
+!  P. Wautelet 11/06/2020: bugfix: correct PRSVS array indices
+!  P. Wautelet + Benoît Vié 06/2020: improve removal of negative scalar variables + adapt the corresponding budgets
+!  P. Wautelet 30/06/2020: move removal of negative scalar variables to Sources_neg_correct
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -162,6 +163,7 @@ USE MODE_FIELD,          ONLY: TFIELDDATA, TYPEREAL
 USE MODE_IO_FIELD_WRITE, only: IO_Field_write
 USE MODE_ll
 USE MODE_MSG
+use mode_sources_neg_correct, only: Sources_neg_correct
 !
 USE MODI_ADV_BOUNDARIES
 USE MODI_BUDGET
@@ -672,137 +674,9 @@ IF (KRR>=7.AND.LBUDGET_RH) CALL BUDGET (PRRS(:,:,:,7),12,'ADV_BU_RRH')
 DO JSV=1,KSV
   IF (LBUDGET_SV) CALL BUDGET (PRSVS(:,:,:,JSV),JSV+12,'ADV_BU_RSV')
 END DO
-!
-SELECT CASE ( HCLOUD )
-  CASE('ICE3','ICE4')
-     ZEXN(:,:,:)= (PPABST(:,:,:)/XP00)**(XRD/XCPD)
-     ZT(:,:,:)= PTHT(:,:,:)*ZEXN(:,:,:)
-     ZLV(:,:,:)=XLVTT +(XCPV-XCL) *(ZT(:,:,:)-XTT)
-     ZLS(:,:,:)=XLSTT +(XCPV-XCI) *(ZT(:,:,:)-XTT)
-     ZCPH(:,:,:)=XCPD +XCPV*PRT(:,:,:,1)
-    WHERE (PRRS(:,:,:,4) < 0.)
-      PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,4)
-      PRTHS(:,:,:) = PRTHS(:,:,:) - PRRS(:,:,:,4) * ZLS(:,:,:) /  &
-           ZCPH(:,:,:) / ZEXN(:,:,:)
-      PRRS(:,:,:,4) = 0.
-    END WHERE
-!
-!   cloud
-    WHERE (PRRS(:,:,:,2) < 0.)
-      PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,2)
-      PRTHS(:,:,:) = PRTHS(:,:,:) - PRRS(:,:,:,2) * ZLV(:,:,:) /  &
-           ZCPH(:,:,:) / ZEXN(:,:,:)
-      PRRS(:,:,:,2) = 0.
-    END WHERE
-!
-! if rc or ri are positive, we can correct negative rv
-!   cloud
-    WHERE ((PRRS(:,:,:,1) <0.) .AND. (PRRS(:,:,:,2)> 0.) )
-      PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,2)
-      PRTHS(:,:,:) = PRTHS(:,:,:) - PRRS(:,:,:,2) * ZLV(:,:,:) /  &
-           ZCPH(:,:,:) / ZEXN(:,:,:)
-      PRRS(:,:,:,2) = 0.
-    END WHERE
-!   ice
-    IF(KRR > 3) THEN
-      WHERE ((PRRS(:,:,:,1) < 0.).AND.(PRRS(:,:,:,4) > 0.))
-        ZCOR(:,:,:)=MIN(-PRRS(:,:,:,1),PRRS(:,:,:,4))
-        PRRS(:,:,:,1) = PRRS(:,:,:,1) + ZCOR(:,:,:)
-        PRTHS(:,:,:) = PRTHS(:,:,:) - ZCOR(:,:,:) * ZLS(:,:,:) /  &
-             ZCPH(:,:,:) / ZEXN(:,:,:)
-        PRRS(:,:,:,4) = PRRS(:,:,:,4) -ZCOR(:,:,:)
-      END WHERE
-    END IF
-!
-  CASE('C2R2','KHKO')
-     ZEXN(:,:,:)= (PPABST(:,:,:)/XP00)**(XRD/XCPD)
-     ZT(:,:,:)= PTHT(:,:,:)*ZEXN(:,:,:)
-     ZLV(:,:,:)=XLVTT +(XCPV-XCL) *(ZT(:,:,:)-XTT)
-     ZLS(:,:,:)=XLSTT +(XCPV-XCI) *(ZT(:,:,:)-XTT)
-     ZCPH(:,:,:)=XCPD +XCPV*PRT(:,:,:,1)
-!  CALL GET_HALO(PRRS(:,:,:,2))
-!  CALL GET_HALO(PRSVS(:,:,:,2))
-!  CALL GET_HALO(PRSVS(:,:,:,3))
-     WHERE (PRRS(:,:,:,2) < 0. .OR. PRSVS(:,:,:,2) < 0.)
-        PRSVS(:,:,:,1) = 0.0
-     END WHERE
-     DO JSV = 2, 3
-        WHERE (PRRS(:,:,:,JSV) < 0. .OR. PRSVS(:,:,:,JSV) < 0.)
-           PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,JSV)
-           PRTHS(:,:,:) = PRTHS(:,:,:) - PRRS(:,:,:,JSV) * ZLV(:,:,:) /  &
-                ZCPH(:,:,:) / ZEXN(:,:,:)
-           PRRS(:,:,:,JSV)  = 0.0
-           PRSVS(:,:,:,JSV) = 0.0
-        END WHERE
-     END DO
-     !
-   CASE('LIMA')   
-     ZEXN(:,:,:)= (PPABST(:,:,:)/XP00)**(XRD/XCPD)
-     ZT(:,:,:)= PTHT(:,:,:)*ZEXN(:,:,:)
-     ZLV(:,:,:)=XLVTT +(XCPV-XCL) *(ZT(:,:,:)-XTT)
-     ZLS(:,:,:)=XLSTT +(XCPV-XCI) *(ZT(:,:,:)-XTT)
-     ZCPH(:,:,:)=XCPD +XCPV*PRT(:,:,:,1)
-! Correction where rc<0 or Nc<0
-      IF (LWARM) THEN
-         WHERE (PRRS(:,:,:,2) < XRTMIN(2)/PTSTEP .OR. PRSVS(:,:,:,NSV_LIMA_NC) < XCTMIN(2)/PTSTEP)
-            PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,2)
-            PRTHS(:,:,:) = PRTHS(:,:,:) - PRRS(:,:,:,2) * ZLV(:,:,:) /  &
-                 ZCPH(:,:,:) / ZEXN(:,:,:)
-            PRRS(:,:,:,2)  = 0.0
-            PRSVS(:,:,:,NSV_LIMA_NC) = 0.0
-         END WHERE
-      END IF
-! Correction where rr<0 or Nr<0
-      IF (LWARM .AND. LRAIN) THEN
-         WHERE (PRRS(:,:,:,3) < XRTMIN(3)/PTSTEP .OR. PRSVS(:,:,:,NSV_LIMA_NR) < XCTMIN(3)/PTSTEP)
-            PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,3)
-            PRTHS(:,:,:) = PRTHS(:,:,:) - PRRS(:,:,:,3) * ZLV(:,:,:) /  &
-                 ZCPH(:,:,:) / ZEXN(:,:,:)
-            PRRS(:,:,:,3)  = 0.0
-            PRSVS(:,:,:,NSV_LIMA_NR) = 0.0
-         END WHERE
-      END IF
-! Correction where ri<0 or Ni<0
-      IF (LCOLD) THEN
-         WHERE (PRRS(:,:,:,4) < XRTMIN(4)/PTSTEP .OR. PRSVS(:,:,:,NSV_LIMA_NI) < XCTMIN(4)/PTSTEP)
-            PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,4)
-            PRTHS(:,:,:) = PRTHS(:,:,:) - PRRS(:,:,:,4) * ZLS(:,:,:) /  &
-                 ZCPH(:,:,:) / ZEXN(:,:,:)
-            PRRS(:,:,:,4)  = 0.0
-            PRSVS(:,:,:,NSV_LIMA_NI) = 0.0
-         END WHERE
-      END IF
-!
-      PRSVS(:,:,:,:) = MAX( 0.0,PRSVS(:,:,:,:) )
-      PRRS(:,:,:,:) = MAX( 0.0,PRRS(:,:,:,:) )
-!
-END SELECT
-!
-IF ((HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2') .OR. (HCLOUD == 'LIMA') ) THEN
-  IF (LBUDGET_TH) CALL BUDGET (PRTHS(:,:,:) , 4,'NEADV_BU_RTH')
-  IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1), 6,'NEADV_BU_RRV')
-  IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2), 7,'NEADV_BU_RRC')
-  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,3), 8,'NEADV_BU_RRR')
-  IF (LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4), 9,'NEADV_BU_RRI')
-  IF (LBUDGET_RS) CALL BUDGET (PRRS(:,:,:,5),10,'NEADV_BU_RRS')
-  IF (LBUDGET_RG) CALL BUDGET (PRRS(:,:,:,6),11,'NEADV_BU_RRG')
-  IF (LBUDGET_RH) CALL BUDGET (PRRS(:,:,:,7),12,'NEADV_BU_RRH')
-END IF
-IF (LBUDGET_SV .AND. (HCLOUD == 'LIMA')) THEN
-   IF (LWARM) CALL BUDGET (PRSVS(:,:,:,NSV_LIMA_NC),12+NSV_LIMA_NC,'NEADV_BU_RSV')
-   IF (LWARM.AND.LRAIN) CALL BUDGET (PRSVS(:,:,:,NSV_LIMA_NR),12+NSV_LIMA_NR,'NEADV_BU_RSV')
-   IF (LCOLD) CALL BUDGET (PRSVS(:,:,:,NSV_LIMA_NI),12+NSV_LIMA_NI,'NEADV_BU_RSV')
-   IF (NMOD_CCN.GE.1) THEN
-      DO JI=1, NMOD_CCN
-         CALL BUDGET ( PRSVS(:,:,:,NSV_LIMA_CCN_FREE+JI-1),12+NSV_LIMA_CCN_FREE+JI-1,'NEADV_BU_RSV') 
-      END DO
-   END IF
-   IF (NMOD_IFN.GE.1) THEN
-      DO JI=1, NMOD_IFN
-         CALL BUDGET ( PRSVS(:,:,:,NSV_LIMA_IFN_FREE+JI-1),12+NSV_LIMA_IFN_FREE+JI-1,'NEADV_BU_RSV') 
-      END DO
-   END IF
-END IF
+
+! Remove non-physical negative values (unnecessary in a perfect world) + corresponding budgets
+call Sources_neg_correct( hcloud, 'NEADV', krr, ptstep, ppabst, ptht, prt, prths, prrs, prsvs )
 
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/boundaries.f90 b/src/MNH/boundaries.f90
index a0095f8c355ebaf408bcee8d5bd4396754a85a59..3ab2cf047ca338a8a6a0c4360328154d2f6da13f 100644
--- a/src/MNH/boundaries.f90
+++ b/src/MNH/boundaries.f90
@@ -1,12 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2020 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: /home/cvsroot/MNH-VX-Y-Z/src/MNH/boundaries.f90,v $ $Revision: 1.3.2.1.2.1.2.2.12.3 $ $Date: 2014/01/09 15:01:54 $
-!-----------------------------------------------------------------
 !#####################
 MODULE MODI_BOUNDARIES
 !#####################
@@ -176,46 +172,43 @@ END MODULE MODI_BOUNDARIES
 !!      Modification    18/07/17 (Vionnet)  Add blowing snow variables 
 !!      Modification    01/2018  (JL Redelsperger) Correction for TKE treatment
 !!      Modification    03/02/2020 (B. Vié)  Correction for SV with LIMA
+!  P. Wautelet 04/06/2020: correct call to Set_conc_lima
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
 !         
-USE MODD_PARAMETERS
-USE MODD_CTURB
-USE MODD_CONF
-USE MODD_NSV
-USE MODD_CH_MNHC_n,   ONLY : LUSECHEM, LUSECHIC
-USE MODD_CH_AEROSOL , ONLY : LORILAM
-USE MODD_DUST
-USE MODD_SALT,        ONLY : LSALT
-USE MODD_PASPOL,      ONLY : LPASPOL
-USE MODD_CONDSAMP,    ONLY : LCONDSAMP
-USE MODD_ELEC_DESCR             
-USE MODD_ELEC_n 
 USE MODD_BLOWSNOW,  ONLY : LBLOWSNOW,NBLOWSNOW_2D
 USE MODD_BLOWSNOW_n
-USE MODD_REF_n    
-USE MODD_PARAM_n,    ONLY : CELEC,CCLOUD 
-USE MODD_LBC_n,      ONLY : XPOND
+USE MODD_CH_AEROSOL , ONLY : LORILAM
+USE MODD_CH_MNHC_n,   ONLY : LUSECHEM, LUSECHIC
+USE MODD_CONDSAMP,    ONLY : LCONDSAMP
+USE MODD_CONF
+USE MODD_CTURB
+USE MODD_DUST
 USE MODD_GRID_n,    ONLY : XZZ
-!
-USE MODD_PARAM_LIMA, ONLY : NMOD_CCN, NMOD_IFN, LBOUND, LWARM, LCOLD
-!
+USE MODD_ELEC_DESCR
+USE MODD_ELEC_n
 #ifdef MNH_FOREFIRE
 USE MODD_FOREFIRE,   ONLY : LFOREFIRE
 #endif
+USE MODD_LBC_n,      ONLY : XPOND
+USE MODE_ll
 USE MODD_NESTING,      ONLY : NDAD
-!
+USE MODD_NSV
+USE MODD_PARAMETERS
+USE MODD_PARAM_LIMA, ONLY : NMOD_CCN, NMOD_IFN, LBOUND, LWARM, LCOLD
+USE MODD_PARAM_n,    ONLY : CELEC,CCLOUD
+USE MODD_PASPOL,      ONLY : LPASPOL
+USE MODD_REF_n
+USE MODD_SALT,        ONLY : LSALT
+
 USE MODE_MODELN_HANDLER
-!
-USE MODI_ION_BOUNDARIES
+USE MODE_SET_CONC_LIMA
+
 USE MODI_CH_BOUNDARIES
-!
-USE MODE_ll
-!
 USE MODI_INIT_AEROSOL_CONCENTRATION
-USE MODI_SET_CONC_LIMA
-!
+USE MODI_ION_BOUNDARIES
+
 IMPLICIT NONE
 !
 !
@@ -1013,7 +1006,7 @@ IF (CCLOUD == 'LIMA' .AND. IMI == 1 .AND. CPROGRAM=='MESONH') THEN
      ENDIF
   END DO
 
-  CALL SET_CONC_LIMA('NONE',PRHODREF,ZRT,ZSVT)
+  CALL SET_CONC_LIMA( IMI, 'NONE', PRHODREF, ZRT(:, :, :, :), ZSVT(:, :, :, NSV_LIMA_BEG:NSV_LIMA_END) )
   IF (NSV_LIMA_NC.GE.1) THEN
      IF (GLIMABOUNDARY(NSV_LIMA_NC)) THEN
         PSVT(IIB-1,:,:,NSV_LIMA_NC)=ZSVT(IIB-1,:,:,NSV_LIMA_NC) ! cloud
diff --git a/src/MNH/default_desfmn.f90 b/src/MNH/default_desfmn.f90
index 934b3447a3e135da7947c7fb823d1907f91b83fa..a554e967f003a65d25b075efa39da3ead31f85cc 100644
--- a/src/MNH/default_desfmn.f90
+++ b/src/MNH/default_desfmn.f90
@@ -1,8 +1,7 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2020 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.
-! _Source: /home/cvsroot/MNH-VX-Y-Z/src/MNH/default_desfmn.f90,v _
 !-----------------------------------------------------------------
 !     ###########################
       MODULE MODI_DEFAULT_DESFM_n
@@ -230,7 +229,8 @@ END MODULE MODI_DEFAULT_DESFM_n
 !!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !!                   05/2019 F.Brient add tracer emission from the top of the boundary-layer
 !!                   11/2019 C.Lac correction in the drag formula and application to building in addition to tree
-!!
+!  P. Wautelet 30/06/2020: add NNETURSV, NNEADVSV and NNECONSV variables
+!
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -881,7 +881,10 @@ IF (KMI == 1) THEN
   NHTURBSV = 0
   NCHEMSV  = 0
   NNEGASV  = 0
-  NDEPOTRSV  = 0
+  NNETURSV = 0
+  NNEADVSV = 0
+  NNECONSV = 0
+  NDEPOTRSV = 0
 !
 !
 END IF
diff --git a/src/MNH/ini_budget.f90 b/src/MNH/ini_budget.f90
index 3c49a64ba711e8d9e64d3cab636709a365826c06..907a8d1d668634f6c53da83a38c8638f7ad7fd26 100644
--- a/src/MNH/ini_budget.f90
+++ b/src/MNH/ini_budget.f90
@@ -11,7 +11,8 @@ INTERFACE
       ONUMDIFU,ONUMDIFTH,ONUMDIFSV,                                   &
       OHORELAX_UVWTH,OHORELAX_RV,OHORELAX_RC,OHORELAX_RR,             &
       OHORELAX_RI,OHORELAX_RS, OHORELAX_RG, OHORELAX_RH,OHORELAX_TKE, & 
-      OHORELAX_SV,OVE_RELAX,OCHTRANS,ONUDGING,ODRAGTREE,ODEPOTREE,    &
+      OHORELAX_SV, OVE_RELAX, ove_relax_grd, OCHTRANS,                &
+      ONUDGING,ODRAGTREE,ODEPOTREE,                                   &
       HRAD,HDCONV,HSCONV,HTURB,HTURBDIM,HCLOUD                        )
 !
 INTEGER,         INTENT(IN) :: KLUOUT   ! Logical unit number for prints
@@ -44,7 +45,9 @@ LOGICAL,DIMENSION(:),INTENT(IN):: OHORELAX_SV     ! switch for the
                        ! horizontal relaxation for scalar variables
 LOGICAL, INTENT(IN) :: OVE_RELAX        ! switch to activate the vertical 
                                         ! relaxation
-LOGICAL, INTENT(IN) :: OCHTRANS         ! switch to activate convective 
+logical, intent(in) :: ove_relax_grd    ! switch to activate the vertical
+                                        ! relaxation to the lowest verticals
+LOGICAL, INTENT(IN) :: OCHTRANS         ! switch to activate convective
                                         !transport for SV
 LOGICAL, INTENT(IN) :: ONUDGING         ! switch to activate nudging
 LOGICAL, INTENT(IN) :: ODRAGTREE        ! switch to activate vegetation drag
@@ -70,7 +73,8 @@ END MODULE MODI_INI_BUDGET
       ONUMDIFU,ONUMDIFTH,ONUMDIFSV,                                   &
       OHORELAX_UVWTH,OHORELAX_RV,OHORELAX_RC,OHORELAX_RR,             &
       OHORELAX_RI,OHORELAX_RS, OHORELAX_RG, OHORELAX_RH,OHORELAX_TKE, & 
-      OHORELAX_SV,OVE_RELAX,OCHTRANS,ONUDGING,ODRAGTREE,ODEPOTREE,    &
+      OHORELAX_SV, OVE_RELAX, ove_relax_grd, OCHTRANS,                &
+      ONUDGING,ODRAGTREE,ODEPOTREE,                                   &
       HRAD,HDCONV,HSCONV,HTURB,HTURBDIM,HCLOUD                        )
 !     #################################################################
 !
@@ -148,16 +152,20 @@ END MODULE MODI_INI_BUDGET
 !!      C.Lac           29/01/15  Correction for NSV_USER
 !!      J.Escobar       02/10/2015 modif for JPHEXT(JPVEXT) variable  
 !!      C.Lac           04/12/15  Correction for LSUPSAT 
-!!                   04/2016 (C.LAC) negative contribution to the budget splitted between advection, turbulence and microphysics for KHKO/C2R2
-!!      C. Barthe       01/2016   Add budget for LIMA
-!!      C.Lac          10/2016   Add budget for droplet deposition
-!!      S. Riette        11/2016  New budgets for ICE3/ICE4
+!  C. Lac         04/2016: negative contribution to the budget split between advection, turbulence and microphysics for KHKO/C2R2
+!  C. Barthe      01/2016: add budget for LIMA
+!  C. Lac         10/2016: add budget for droplet deposition
+!  S. Riette      11/2016: new budgets for ICE3/ICE4
 !  P. Wautelet 05/2016-04/2018: new data structures and calls for I/O
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !  P. Wautelet 24/02/2020: bugfix: corrected condition for budget NCDEPITH
 !  P. Wautelet 26/02/2020: bugfix: rename CEVA->REVA for budget for raindrop evaporation in C2R2 (necessary after commit 4ed805fc)
 !  P. Wautelet 26/02/2020: bugfix: add missing condition on OCOLD for NSEDIRH budget in LIMA case
 !  B. Vie      02/03/2020: LIMA negativity checks after turbulence, advection and microphysics budgets
+!  P. Wautelet 25/03/2020: add missing ove_relax_grd
+!  P. Wautelet + Benoit Vié 11/06/2020: improve removal of negative scalar variables + adapt the corresponding budgets
+!  P. Wautelet 30/06/2020: use NADVSV when possible
+!  P. Wautelet 30/06/2020: add NNETURSV, NNEADVSV and NNECONSV variables
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -177,6 +185,7 @@ USE MODD_PARAM_LIMA, ONLY : OWARM=>LWARM, OCOLD=>LCOLD, OSEDI=>LSEDI,   &
                             OHAIL=>LHAIL, OSCAV=>LSCAV, OMEYERS=>LMEYERS,&
                             ODEPOC=>LDEPOC, OPTSPLIT=>LPTSPLIT,          &
                             NMOD_CCN
+USE MODD_PARAM_n,    only: CELEC
 !
 USE MODE_ll
 USE MODE_MSG
@@ -216,7 +225,9 @@ LOGICAL,DIMENSION(:),INTENT(IN):: OHORELAX_SV     ! switch for the
                        ! horizontal relaxation for scalar variables
 LOGICAL, INTENT(IN) :: OVE_RELAX        ! switch to activate the vertical 
                                         ! relaxation
-LOGICAL, INTENT(IN) :: OCHTRANS         ! switch to activate convective 
+logical, intent(in) :: ove_relax_grd    ! switch to activate the vertical
+                                        ! relaxation to the lowest verticals
+LOGICAL, INTENT(IN) :: OCHTRANS         ! switch to activate convective
                                         !transport for SV
 LOGICAL, INTENT(IN) :: ONUDGING         ! switch to activate nudging
 LOGICAL, INTENT(IN) :: ODRAGTREE        ! switch to activate vegetation drag
@@ -445,10 +456,10 @@ IF (LBU_RU) THEN
   IPROC=IPROC+1
   IF ( ONUMDIFU ) IPROACTV(1,IPROC) = NDIFU
   IPROC=IPROC+1
-  IF ( OHORELAX_UVWTH .OR. OVE_RELAX ) THEN   
+  IF ( OHORELAX_UVWTH .OR. OVE_RELAX .or. ove_relax_grd) THEN
     IPROACTV(1,IPROC) = NRELU 
   ELSE
-    IF(OVE_RELAX .OR. OHORELAX_UVWTH .OR. OHORELAX_RV .OR.                 &
+    IF(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
@@ -548,10 +559,10 @@ IF (LBU_RV) THEN
   IPROC=IPROC+1 
   IF ( ONUMDIFU ) IPROACTV(2,IPROC) = NDIFV
   IPROC=IPROC+1 
-  IF ( OHORELAX_UVWTH .OR. OVE_RELAX ) THEN   
+  IF ( OHORELAX_UVWTH .OR. OVE_RELAX .or. ove_relax_grd ) THEN
     IPROACTV(2,IPROC) = NRELV 
   ELSE
-    IF(OVE_RELAX .OR. OHORELAX_UVWTH .OR. OHORELAX_RV .OR.                 &
+    IF(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
@@ -651,10 +662,10 @@ IF (LBU_RW) THEN
   IPROC=IPROC+1 
   IF ( ONUMDIFU ) IPROACTV(3,IPROC) = NDIFW
   IPROC=IPROC+1
-  IF ( OHORELAX_UVWTH .OR. OVE_RELAX ) THEN   
+  IF ( OHORELAX_UVWTH .OR. OVE_RELAX .or. ove_relax_grd ) THEN
     IPROACTV(3,IPROC) = NRELW 
   ELSE
-    IF(OVE_RELAX .OR. OHORELAX_UVWTH .OR. OHORELAX_RV .OR.                 &
+    IF(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
@@ -748,10 +759,10 @@ IF (LBU_RTH) THEN
   IPROC=IPROC+1
   IF ( ONUMDIFTH ) IPROACTV(4,IPROC) = NDIFTH
   IPROC=IPROC+1
-  IF ( OHORELAX_UVWTH .OR. OVE_RELAX ) THEN   
+  IF ( OHORELAX_UVWTH .OR. OVE_RELAX .or. ove_relax_grd ) THEN
     IPROACTV(4,IPROC) = NRELTH
   ELSE
-    IF(OVE_RELAX .OR. OHORELAX_UVWTH .OR. OHORELAX_RV .OR.                 &
+    IF(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
@@ -778,19 +789,19 @@ IF (LBU_RTH) THEN
   IPROC=IPROC+1
   IF (HTURB /= 'NONE')     IPROACTV(4,IPROC) = NDISSHTH
   IPROC=IPROC+1
-  IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2') &
-       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA') )) &
-          IPROACTV(4,IPROC) = NNETURTH
+  IF ( HTURB /= 'NONE' .AND. (      HCLOUD == 'KESS' .OR. HCLOUD == 'KHKO' .OR. HCLOUD == 'C2R2'     &
+                               .OR. HCLOUD == 'ICE3' .OR. HCLOUD == 'ICE4' .OR. HCLOUD == 'LIMA' ) ) &
+    IPROACTV(4,IPROC) = NNETURTH
   IPROC=IPROC+1
   IF ( HSCONV == 'EDKF' ) IPROACTV(4,IPROC) = NMAFLTH
   IPROC=IPROC+1
   IPROACTV(4,IPROC) = NADVTH
   IPROC=IPROC+1
-  IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2')&
-       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))  IPROACTV(4,IPROC) = NNEADVTH
+  IF (      HCLOUD == 'KESS' .OR. HCLOUD == 'KHKO' .OR. HCLOUD == 'C2R2'   &
+       .OR. HCLOUD == 'ICE3' .OR. HCLOUD == 'ICE4' .OR. HCLOUD == 'LIMA' ) &
+    IPROACTV(4,IPROC) = NNEADVTH
   IPROC=IPROC+1
-  IF (HCLOUD /= 'NONE' .AND. HCLOUD /= 'KHKO' .AND. HCLOUD /= 'C2R2') &
-          IPROACTV(4,IPROC) = NNEGATH
+  IF (HCLOUD /= 'NONE') IPROACTV(4,IPROC) = NNEGATH
   IPROC=IPROC+1
   IF (HCLOUD == 'LIMA') THEN
      IF (OPTSPLIT)                                           IPROACTV(4,IPROC) = NSEDITH 
@@ -891,9 +902,7 @@ IF (LBU_RTH) THEN
       HCLOUD == 'REVE')   IPROACTV(4,IPROC) = NCONDTH                     
       IPROC=IPROC+1
    END IF
-      IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2').OR.  (HCLOUD == 'KESS')&
-       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))&
-          IPROACTV(4,IPROC) = NNECONTH
+      IF (HCLOUD /= 'NONE' .AND. CELEC == 'NONE') IPROACTV(4,IPROC) = NNECONTH
 !
   YWORK2(4,1) = 'INIF_'
   YWORK2(4,2) = 'ENDF_'
@@ -1060,7 +1069,7 @@ IF (LBU_RTKE) THEN
   IF ( OHORELAX_TKE ) THEN
     IPROACTV(5,IPROC) = NRELTKE
   ELSE
-    IF(OVE_RELAX .OR. OHORELAX_UVWTH .OR. OHORELAX_RV .OR.                 &
+    IF(OVE_RELAX .OR. OVE_RELAX_GRD .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
@@ -1139,7 +1148,7 @@ IF (LBU_RRV) THEN
   IF ( OHORELAX_RV .OR. OVE_RELAX ) THEN  
     IPROACTV(6,IPROC) = NRELRV
   ELSE
-    IF(OVE_RELAX .OR. OHORELAX_UVWTH .OR. OHORELAX_RV .OR.                 &
+    IF(OVE_RELAX .OR. OVE_RELAX_GRD.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
@@ -1162,19 +1171,19 @@ IF (LBU_RRV) THEN
     END IF
   END IF 
   IPROC=IPROC+1 
-  IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR.  (HCLOUD == 'C2R2')&
-       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))) &
+  IF ( HTURB /= 'NONE' .AND. (      HCLOUD == 'KESS' .OR. HCLOUD == 'KHKO' .OR. HCLOUD == 'C2R2'     &
+                               .OR. HCLOUD == 'ICE3' .OR. HCLOUD == 'ICE4' .OR. HCLOUD == 'LIMA' ) ) &
    IPROACTV(6,IPROC) = NNETURRV
   IPROC=IPROC+1 
   IF ( HSCONV == 'EDKF' ) IPROACTV(6,IPROC) = NMAFLRV
   IPROC=IPROC+1 
   IPROACTV(6,IPROC) = NADVRV
   IPROC=IPROC+1   
-  IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2')&
-       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))  IPROACTV(6,IPROC) = NNEADVRV
+  IF (      HCLOUD == 'KESS' .OR. HCLOUD == 'KHKO' .OR. HCLOUD == 'C2R2'   &
+       .OR. HCLOUD == 'ICE3' .OR. HCLOUD == 'ICE4' .OR. HCLOUD == 'LIMA' ) &
+    IPROACTV(6,IPROC) = NNEADVRV
   IPROC=IPROC+1 
-  IF (HCLOUD /= 'NONE' .AND. HCLOUD /= 'KHKO' .AND. HCLOUD /= 'C2R2') &
-     IPROACTV(6,IPROC) = NNEGARV
+  IF (HCLOUD /= 'NONE') IPROACTV(6,IPROC) = NNEGARV
   IPROC=IPROC+1   
 
   IF (HCLOUD == 'LIMA') THEN
@@ -1224,9 +1233,7 @@ IF (LBU_RRV) THEN
           IPROACTV(6,IPROC) = NCDEPIRV 
   IPROC=IPROC+1
 END IF
-  IF ( (HCLOUD == 'KHKO' )  .OR.  (HCLOUD == 'C2R2') .OR.  (HCLOUD == 'KESS')&
-       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA')) &
-          IPROACTV(6,IPROC) = NNECONRV
+  IF ( HCLOUD /= 'NONE' .AND. CELEC == 'NONE' ) IPROACTV(6,IPROC) = NNECONRV
   IPROC=IPROC+1   
 
 !
@@ -1334,7 +1341,7 @@ IF (LBU_RRC) THEN
   IF ( OHORELAX_RC ) THEN
     IPROACTV(7,IPROC) = NRELRC
   ELSE
-    IF(OVE_RELAX .OR. OHORELAX_UVWTH .OR. OHORELAX_RV .OR.                 &
+    IF(OVE_RELAX .OR. OVE_RELAX_GRD .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
@@ -1359,18 +1366,17 @@ IF (LBU_RRC) THEN
     END IF
   END IF 
   IPROC=IPROC+1
-  IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR.  (HCLOUD == 'C2R2')&
-       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))) &
-      IPROACTV(7,IPROC) = NNETURRC
+  IF ( HTURB /= 'NONE' .AND. (      HCLOUD == 'KESS' .OR. HCLOUD == 'KHKO' .OR. HCLOUD == 'C2R2'     &
+                               .OR. HCLOUD == 'ICE3' .OR. HCLOUD == 'ICE4' .OR. HCLOUD == 'LIMA' ) ) &
+    IPROACTV(7,IPROC) = NNETURRC
   IPROC=IPROC+1
   IPROACTV(7,IPROC) = NADVRC
   IPROC=IPROC+1
-  IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2')&
-       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))  &
-      IPROACTV(7,IPROC) = NNEADVRC
+  IF (      HCLOUD == 'KESS' .OR. HCLOUD == 'KHKO' .OR. HCLOUD == 'C2R2'   &
+       .OR. HCLOUD == 'ICE3' .OR. HCLOUD == 'ICE4' .OR. HCLOUD == 'LIMA' ) &
+    IPROACTV(7,IPROC) = NNEADVRC
   IPROC=IPROC+1
-  IF (HCLOUD /= 'NONE' .AND. HCLOUD /= 'KHKO' .AND. HCLOUD /= 'C2R2') &
-     IPROACTV(7,IPROC)  = NNEGARC
+  IF (HCLOUD /= 'NONE') IPROACTV(7,IPROC)  = NNEGARC
   IPROC=IPROC+1
 
   IF (HCLOUD == 'LIMA') THEN
@@ -1474,9 +1480,7 @@ IF (LBU_RRC) THEN
       HCLOUD(1:3) == 'KES'.OR. HCLOUD == 'REVE') IPROACTV(7,IPROC) = NCONDRC
   IPROC=IPROC+1
 END IF
-  IF ( (HCLOUD == 'KHKO' )  .OR.  (HCLOUD == 'C2R2') .OR.  (HCLOUD == 'KESS')&
-       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA')) &
-     IPROACTV(7,IPROC) = NNECONRC
+  IF (HCLOUD /= 'NONE' .AND. CELEC == 'NONE') IPROACTV(7,IPROC) = NNECONRC
   IPROC=IPROC+1
 
 !
@@ -1627,7 +1631,7 @@ IF (LBU_RRR) THEN
   IF ( OHORELAX_RR ) THEN
     IPROACTV(8,IPROC) = NRELRR
   ELSE
-    IF(OVE_RELAX .OR. OHORELAX_UVWTH .OR. OHORELAX_RV .OR.                 &
+    IF(OVE_RELAX .OR. OVE_RELAX_GRD.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
@@ -1636,13 +1640,14 @@ IF (LBU_RRR) THEN
     END IF
   END IF
   IPROC=IPROC+1
-  IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2')&
-       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))  IPROACTV(8,IPROC) = NNETURRR
+  IF ( HTURB /= 'NONE' .AND. ( HCLOUD == 'KHKO' .OR. HCLOUD == 'C2R2' .OR. HCLOUD == 'LIMA' ) ) &
+    IPROACTV(8,IPROC) = NNETURRR
   IPROC=IPROC+1
   IPROACTV(8,IPROC) = NADVRR
   IPROC=IPROC+1
-  IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2')&
-       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))  IPROACTV(8,IPROC) = NNEADVRR
+  IF (      HCLOUD == 'KESS' .OR. HCLOUD == 'KHKO' .OR. HCLOUD == 'C2R2'   &
+       .OR. HCLOUD == 'ICE3' .OR. HCLOUD == 'ICE4' .OR. HCLOUD == 'LIMA' ) &
+    IPROACTV(8,IPROC) = NNEADVRR
   IPROC=IPROC+1
   IF ( HCLOUD /= 'NONE' ) IPROACTV(8,IPROC) = NNEGARR
   IPROC=IPROC+1
@@ -1734,9 +1739,7 @@ IF (LBU_RRR) THEN
        IPROACTV(8,IPROC) = NSEDIRR
      IPROC=IPROC+1
   END IF
-      IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2')&
-       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))&
-          IPROACTV(8,IPROC) = NNECONRR
+      IF (HCLOUD /= 'NONE' .AND. CELEC == 'NONE') IPROACTV(8,IPROC) = NNECONRR
 !
   YWORK2(8,1) = 'INIF_'
   YWORK2(8,2) = 'ENDF_'
@@ -1869,7 +1872,7 @@ IF (LBU_RRI) THEN
   IF ( OHORELAX_RI ) THEN
     IPROACTV(9,IPROC) = NRELRI
   ELSE
-    IF(OVE_RELAX .OR. OHORELAX_UVWTH .OR. OHORELAX_RV .OR.                 &
+    IF(OVE_RELAX .OR. OVE_RELAX_GRD .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
@@ -1892,14 +1895,14 @@ IF (LBU_RRI) THEN
     END IF
   END IF 
   IPROC=IPROC+1
-  IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2') &
-       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA') )) &
-          IPROACTV(9,IPROC) = NNETURRI
+  IF ( HTURB /= 'NONE' .AND. ( HCLOUD == 'ICE3' .OR. HCLOUD == 'ICE4' .OR. HCLOUD == 'LIMA' ) ) &
+    IPROACTV(9,IPROC) = NNETURRI
   IPROC=IPROC+1
   IPROACTV(9,IPROC) = NADVRI
   IPROC=IPROC+1
-  IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2')&
-       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))  IPROACTV(9,IPROC) = NNEADVRI
+  IF (      HCLOUD == 'KESS' .OR. HCLOUD == 'KHKO' .OR. HCLOUD == 'C2R2'   &
+       .OR. HCLOUD == 'ICE3' .OR. HCLOUD == 'ICE4' .OR. HCLOUD == 'LIMA' ) &
+    IPROACTV(9,IPROC) = NNEADVRI
   IPROC=IPROC+1
   IF( HCLOUD /= 'NONE' ) IPROACTV(9,IPROC) = NNEGARI
   IPROC=IPROC+1
@@ -1979,9 +1982,7 @@ IF (LBU_RRI) THEN
              IPROACTV(9,IPROC) = NCDEPIRI
      IPROC=IPROC+1
   END IF
-      IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2')&
-       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))&
-          IPROACTV(9,IPROC) = NNECONRI
+      IF (HCLOUD /= 'NONE' .AND. CELEC == 'NONE') IPROACTV(9,IPROC) = NNECONRI
 !
   YWORK2(9,1) = 'INIF_'
   YWORK2(9,2) = 'ENDF_'
@@ -2111,7 +2112,7 @@ IF (LBU_RRS) THEN
   IF ( OHORELAX_RS ) THEN
     IPROACTV(10,IPROC) = NRELRS
   ELSE
-    IF(OVE_RELAX .OR. OHORELAX_UVWTH .OR. OHORELAX_RV .OR.                 &
+    IF(OVE_RELAX .OR. OVE_RELAX_GRD .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
@@ -2119,15 +2120,16 @@ IF (LBU_RRS) THEN
       IPROACTV(10,IPROC) = 3
     END IF
   END IF
-  IPROC=IPROC+1
-  IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2') &
-       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA') )) &
-          IPROACTV(10,IPROC) = NNETURRS
+!   IPROC=IPROC+1
+!   IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2') &
+!        .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA') )) &
+!           IPROACTV(10,IPROC) = NNETURRS
   IPROC=  IPROC+1
   IPROACTV(10,IPROC) = NADVRS
   IPROC=IPROC+1
-  IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2')&
-       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))  IPROACTV(10,IPROC) = NNEADVRS
+  IF (      HCLOUD == 'KESS' .OR. HCLOUD == 'KHKO' .OR. HCLOUD == 'C2R2'   &
+       .OR. HCLOUD == 'ICE3' .OR. HCLOUD == 'ICE4' .OR. HCLOUD == 'LIMA' ) &
+    IPROACTV(10,IPROC) = NNEADVRS
   IPROC=  IPROC+1
   IF( HCLOUD /= 'NONE' ) IPROACTV(10,IPROC) = NNEGARS
   IPROC=IPROC+1
@@ -2190,9 +2192,7 @@ IF (HCLOUD=='LIMA') THEN
           IPROACTV(10,IPROC) = NSEDIRS
   IPROC=IPROC+1
 END IF
-      IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2')&
-       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))&
-          IPROACTV(10,IPROC) = NNECONRS
+      IF (HCLOUD /= 'NONE' .AND. CELEC == 'NONE') IPROACTV(10,IPROC) = NNECONRS
 !
   YWORK2(10,1) = 'INIF_'
   YWORK2(10,2) = 'ENDF_'
@@ -2207,8 +2207,8 @@ END IF
   YWORK2(10,IPROC) = 'DIF_'
   IPROC=  IPROC+1
   YWORK2(10,IPROC) = 'REL_'
-  IPROC=IPROC+1
-  YWORK2(10,IPROC) = 'NETUR_'
+!   IPROC=IPROC+1
+!   YWORK2(10,IPROC) = 'NETUR_'
   IPROC=  IPROC+1
   YWORK2(10,IPROC) = 'ADV_'
   IPROC=IPROC+1
@@ -2300,7 +2300,7 @@ IF (LBU_RRG) THEN
   IF ( OHORELAX_RG ) THEN
     IPROACTV(11,IPROC) = NRELRG
   ELSE
-    IF(OVE_RELAX .OR. OHORELAX_UVWTH .OR. OHORELAX_RV .OR.                 &
+    IF(OVE_RELAX .OR. OVE_RELAX_GRD .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
@@ -2308,15 +2308,16 @@ IF (LBU_RRG) THEN
       IPROACTV(11,IPROC) = 3
     END IF
   END IF
-  IPROC=IPROC+1
-  IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2') &
-       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA') )) &
-          IPROACTV(11,IPROC) = NNETURRG
+!   IPROC=IPROC+1
+!   IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2') &
+!        .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA') )) &
+!           IPROACTV(11,IPROC) = NNETURRG
   IPROC=IPROC+1
   IPROACTV(11,IPROC) = NADVRG
   IPROC=IPROC+1
-  IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2')&
-       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))  IPROACTV(11,IPROC) = NNEADVRG
+  IF (      HCLOUD == 'KESS' .OR. HCLOUD == 'KHKO' .OR. HCLOUD == 'C2R2'   &
+       .OR. HCLOUD == 'ICE3' .OR. HCLOUD == 'ICE4' .OR. HCLOUD == 'LIMA' ) &
+    IPROACTV(11,IPROC) = NNEADVRG
   IPROC=IPROC+1
   IF( HCLOUD /= 'NONE'  ) IPROACTV(11,IPROC) = NNEGARG
   IPROC=IPROC+1
@@ -2384,9 +2385,7 @@ ELSE
           IPROACTV(11,IPROC) = NSEDIRG
   IPROC=IPROC+1
 END IF
-      IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2')&
-       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))&
-          IPROACTV(11,IPROC) = NNECONRG
+      IF (HCLOUD /= 'NONE' .AND. CELEC == 'NONE') IPROACTV(11,IPROC) = NNECONRG
 !
   YWORK2(11,1) = 'INIF_'
   YWORK2(11,2) = 'ENDF_'
@@ -2401,8 +2400,8 @@ END IF
   YWORK2(11,IPROC) = 'DIF_'
   IPROC=IPROC+1
   YWORK2(11,IPROC) = 'REL_'
-  IPROC=IPROC+1
-  YWORK2(11,IPROC) = 'NETUR_'
+!   IPROC=IPROC+1
+!   YWORK2(11,IPROC) = 'NETUR_'
   IPROC=IPROC+1
   YWORK2(11,IPROC) = 'ADV_'
   IPROC=IPROC+1
@@ -2512,7 +2511,7 @@ IF (LBU_RRH) THEN
   IF ( OHORELAX_RH ) THEN
     IPROACTV(12,IPROC) = NRELRH
   ELSE
-    IF(OVE_RELAX .OR. OHORELAX_UVWTH .OR. OHORELAX_RV .OR.                 &
+    IF(OVE_RELAX .OR. OVE_RELAX_GRD .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
@@ -2520,15 +2519,16 @@ IF (LBU_RRH) THEN
       IPROACTV(12,IPROC) = 3
     END IF
   END IF
-  IPROC=IPROC+1
-  IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2') &
-       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA') )) &
-          IPROACTV(12,IPROC) = NNETURRH
+!   IPROC=IPROC+1
+!   IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2') &
+!        .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA') )) &
+!           IPROACTV(12,IPROC) = NNETURRH
   IPROC=IPROC+1
   IPROACTV(12,IPROC) = NADVRH
   IPROC=IPROC+1
-  IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2')&
-       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))  IPROACTV(12,IPROC) = NNEADVRH
+  IF (      HCLOUD == 'KESS' .OR. HCLOUD == 'KHKO' .OR. HCLOUD == 'C2R2'   &
+       .OR. HCLOUD == 'ICE3' .OR. HCLOUD == 'ICE4' .OR. HCLOUD == 'LIMA' ) &
+    IPROACTV(12,IPROC) = NNEADVRH
   IPROC=IPROC+1
   IF( HCLOUD /= 'NONE' ) THEN
     IPROACTV(12,IPROC) = NNEGARH 
@@ -2569,9 +2569,7 @@ IF (LBU_RRH) THEN
      (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LSEDIM_AFTER)) &
           IPROACTV(12,IPROC) = NSEDIRH
   END IF
-      IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2')&
-       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))&
-          IPROACTV(12,IPROC) = NNECONRH
+      IF (HCLOUD /= 'NONE' .AND. CELEC == 'NONE') IPROACTV(12,IPROC) = NNECONRH
 !
   YWORK2(12,1) = 'INIF_'
   YWORK2(12,2) = 'ENDF_'
@@ -2586,8 +2584,8 @@ IF (LBU_RRH) THEN
   YWORK2(12,IPROC) = 'DIF_'
   IPROC=IPROC+1
   YWORK2(12,IPROC) = 'REL_'
-  IPROC=IPROC+1
-  YWORK2(12,IPROC) = 'NETUR_'
+!   IPROC=IPROC+1
+!   YWORK2(12,IPROC) = 'NETUR_'
   IPROC=IPROC+1
   YWORK2(12,IPROC) = 'ADV_'
   IPROC=IPROC+1
@@ -2659,7 +2657,7 @@ IF (LBU_RSV) THEN
     IF ( OHORELAX_SV(JSV) ) THEN
       IPROACTV(12+JSV,IPROC) = NRELSV
     ELSE
-    IF(OVE_RELAX .OR. OHORELAX_UVWTH .OR. OHORELAX_RV .OR.                 &
+    IF(OVE_RELAX .OR. OVE_RELAX_GRD .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
@@ -2688,7 +2686,7 @@ IF (LBU_RSV) THEN
     IPROC=IPROC+1
     IF ( HSCONV == 'EDKF' ) IPROACTV(12+JSV,IPROC)= NMAFLSV
     IPROC=IPROC+1
-    IF ( HCLOUD /= 'LIMA' ) IPROACTV(12+JSV,IPROC)= NADVSV
+    IF ( HCLOUD /= 'LIMA' .AND. HCLOUD /= 'C2R2' .AND. HCLOUD /= 'KHKO' ) IPROACTV(12+JSV,IPROC)= NADVSV
     IPROC=IPROC+1
 !
     YWORK2(12+JSV,1) = 'INIF_'
@@ -3003,20 +3001,47 @@ USE MODD_PARAM_LIMA, ONLY : NMOD_CCN, NMOD_IFN, NMOD_IMM
     ! C2R2 or KHKO Case
     SELECT CASE(JSV-NSV_C2R2BEG+1)
     CASE (1)                               ! Concentration of activated nuclei
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNETURSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NADVSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEADV_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEADVSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV
      IF (.NOT. LSUPSAT) THEN
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'HENU_'
-     END IF
       IPROACTV(12+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
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NECON_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNECONSV
     CASE (2)                               ! Concentration of cloud droplets
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNETURSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NADVSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEADV_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEADVSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV
      IF (.NOT. LSUPSAT) THEN
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'HENU_'
-     END IF
       IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+     END IF
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'SELF_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
@@ -3036,7 +3061,22 @@ USE MODD_PARAM_LIMA, ONLY : NMOD_CCN, NMOD_IFN, NMOD_IMM
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'CEVA_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NECON_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNECONSV
     CASE (3)                               ! Concentration of raindrops
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNETURSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NADVSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEADV_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEADVSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'AUTO_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
@@ -3054,6 +3094,9 @@ USE MODD_PARAM_LIMA, ONLY : NMOD_CCN, NMOD_IFN, NMOD_IMM
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'SEDI_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NECON_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNECONSV
     END SELECT
     !
 ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN  
@@ -3062,16 +3105,16 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN
       ! Cloud droplets conc.
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNETURSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NADVSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEADV_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEADVSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV
       IF (OPTSPLIT .AND. OWARM .AND. ORAIN) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
          YWORK2(12+JSV,ILAST_PROC_NBR)= 'CORR_'
@@ -3167,22 +3210,22 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN
       IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NECON_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNECONSV
       !
    ELSE IF (JSV == NSV_LIMA_NR) THEN
       ! Rain drops conc.
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNETURSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NADVSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEADV_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEADVSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV
       IF (OPTSPLIT .AND. OWARM .AND. ORAIN) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
          YWORK2(12+JSV,ILAST_PROC_NBR)= 'CORR_'
@@ -3265,22 +3308,22 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN
       END IF
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NECON_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNECONSV
       !
    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)= 'NETUR_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNETURSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NADVSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEADV_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEADVSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV
       IF (OWARM .AND. OACTI .AND. NMOD_CCN.GE.1) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
          YWORK2(12+JSV,ILAST_PROC_NBR)= 'HENU_'
@@ -3296,7 +3339,7 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN
       IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NECON_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNECONSV
       IF (OSCAV) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
          YWORK2(12+JSV,ILAST_PROC_NBR)= 'SCAV_'
@@ -3304,25 +3347,54 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN
       END IF
       !
    ELSE IF (JSV.GE.NSV_LIMA_CCN_ACTI .AND. JSV.LT.(NSV_LIMA_CCN_ACTI+NMOD_CCN)) THEN
+      ! Activated CCN conc.
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNETURSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
-      ! Activated CCN conc.
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NADVSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEADV_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEADVSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NECON_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNECONSV
+
+   ELSE IF (JSV == NSV_LIMA_SCAVMASS) THEN
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNETURSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NADVSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEADV_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEADVSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NECON_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNECONSV
 
    ELSE IF (JSV == NSV_LIMA_NI) THEN
       ! Pristine ice crystals conc.
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNETURSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NADVSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEADV_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEADVSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV
       IF (OPTSPLIT .AND. OCOLD .AND. OSNOW) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
          YWORK2(12+JSV,ILAST_PROC_NBR)= 'CORR_'
@@ -3408,22 +3480,22 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN
       IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NECON_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNECONSV
       !
    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)= 'NETUR_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNETURSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NADVSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEADV_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEADVSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV
       IF (OCOLD .AND. ONUCL .AND. (.NOT.OMEYERS)) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
          YWORK2(12+JSV,ILAST_PROC_NBR)= 'HIND_'
@@ -3434,7 +3506,7 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN
       IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NECON_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNECONSV
       IF (OSCAV) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
          YWORK2(12+JSV,ILAST_PROC_NBR)= 'SCAV_'
@@ -3442,27 +3514,63 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN
       END IF
       !
    ELSE IF (JSV.GE.NSV_LIMA_IFN_NUCL .AND. JSV.LT.(NSV_LIMA_IFN_NUCL+NMOD_IFN)) THEN
+      ! Nucleated IFN conc.
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNETURSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
-      ! Nucleated IFN conc.
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NADVSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEADV_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEADVSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NECON_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNECONSV
 
    ELSE IF (JSV.GE.NSV_LIMA_IMM_NUCL .AND. JSV.LT.(NSV_LIMA_IMM_NUCL+NMOD_IMM)) THEN
+      ! Nucleated IMM conc.
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNETURSV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
-      ! Nucleated IMM conc.
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NADVSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEADV_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEADVSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NECON_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNECONSV
 
    ELSE IF (JSV == NSV_LIMA_HOM_HAZE) THEN
       ! Homogeneous freezing of CCN
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNETURSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NADVSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEADV_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEADVSV
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV
       IF (.NOT.OPTSPLIT .AND. 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
       END IF
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NECON_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNECONSV
 
    END IF
 
@@ -3472,6 +3580,9 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN
 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)= 'NEGA_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR) = 'DEPS_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = NDEPSQV
@@ -3490,6 +3601,9 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN
       YWORK2(12+JSV,ILAST_PROC_NBR) = 'NEUT_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEUTQV
    CASE(2)  ! volumetric charge of cloud droplets
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV
       IF (LWARM) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
          YWORK2(12+JSV,ILAST_PROC_NBR) = 'AUTO_'
@@ -3525,6 +3639,9 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN
       YWORK2(12+JSV,ILAST_PROC_NBR) = 'NEUT_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEUTQC
    CASE(3)  ! volumetric charge of rain drops
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV
       IF (LWARM) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
          YWORK2(12+JSV,ILAST_PROC_NBR) = 'AUTO_'
@@ -3558,6 +3675,9 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN
       YWORK2(12+JSV,ILAST_PROC_NBR) = 'NEUT_'
       IPROACTV(12+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)= 'NEGA_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR) = 'AGGS_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = NAGGSQI
@@ -3592,6 +3712,9 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN
       YWORK2(12+JSV,ILAST_PROC_NBR) = 'NEUT_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEUTQI
    CASE(5)  ! volumetric charge of snow
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR) = 'DEPS_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = NDEPSQS
@@ -3626,6 +3749,9 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN
       YWORK2(12+JSV,ILAST_PROC_NBR) = 'NEUT_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEUTQS
    CASE(6)  ! volumetric charge of graupel
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR) = 'DEPG_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = NDEPGQG
@@ -3658,6 +3784,9 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN
       IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEUTQG
     CASE(7)  ! volumetric charge of hail
 ! add budget for hail volumetric charge
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV
     END SELECT
 !
 ELSE IF (JSV >= NSV_CHEMBEG .AND. JSV <= NSV_CHEMEND) THEN
diff --git a/src/MNH/ini_micron.f90 b/src/MNH/ini_micron.f90
index c6f6b991f6edda384225b3e5c44563d215674ae1..7f4e0225444fc2c24a8ea7b01af2a5a865b1cadd 100644
--- a/src/MNH/ini_micron.f90
+++ b/src/MNH/ini_micron.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2002-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2002-2020 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -50,11 +50,12 @@ END MODULE MODI_INI_MICRO_n
 !!      O.Geoffroy (03/2006) : Add KHKO scheme
 !!      Modification    01/2016  (JP Pinty) Add LIMA
 !!      C.LAc          10/2016   Add budget for droplet deposition
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!!      P.Wautelet     01/2019: bug: add missing allocations
-!  P. Wautelet 14/02/2019: remove CLUOUT/CLUOUT0 and associated variables
+!  P. Wautelet 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet    01/2019: bugfix: add missing allocations
 !  C. Lac         02/2020: add missing allocation of INPRC and ACPRC with deposition
-!! --------------------------------------------------------------------------
+!  P. Wautelet 14/02/2019: remove CLUOUT/CLUOUT0 and associated variables
+!  P. Wautelet 04/06/2020: bugfix: correct bounds of passed arrays
+! --------------------------------------------------------------------------
 !
 !*      0. DECLARATIONS
 !          ------------
@@ -94,6 +95,7 @@ USE MODI_SET_CONC_ICE_C1R3
 USE MODE_ll
 USE MODE_MODELN_HANDLER
 USE MODE_BLOWSNOW_SEDIM_LKT
+USE MODE_SET_CONC_LIMA
 !
 USE MODD_NSV,        ONLY : NSV,NSV_CHEM,NSV_C2R2BEG,NSV_C2R2END, &
                             NSV_C1R3BEG,NSV_C1R3END,              &
@@ -109,7 +111,6 @@ USE MODD_LIMA_PRECIP_SCAVENGING_n
 !
 USE MODI_INIT_AEROSOL_CONCENTRATION
 USE MODI_INI_LIMA
-USE MODI_SET_CONC_LIMA
 !
 IMPLICIT NONE
 !
@@ -140,6 +141,7 @@ INTEGER :: IMI
 !
 CALL GET_DIM_EXT_ll('B',IIU,IJU)
 IKU=SIZE(XZZ,3)
+IMI = GET_CURRENT_MODEL_INDEX()
 !
 !
 !*       2.    ALLOCATE  Module MODD_PRECIP_n
@@ -291,11 +293,7 @@ ELSE IF (CCLOUD == 'C2R2' .OR. CCLOUD == 'C3R5' .OR. CCLOUD == 'KHKO') THEN
     CALL INI_ICE_C1R3(XTSTEP,ZDZMIN,NSPLITG)       ! 1/2 spectral cold cloud
   END IF
 ELSE IF (CCLOUD == 'LIMA') THEN
-  IF (CGETCLOUD /= 'READ') THEN
-    CALL INIT_AEROSOL_CONCENTRATION(XRHODREF,                              &
-                                    XSVT(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END), &
-                                                                XZZ(:,:,:) )
-  END IF
+  IF (CGETCLOUD /= 'READ') CALL INIT_AEROSOL_CONCENTRATION( XRHODREF, XSVT(:, :, :, :), XZZ(:, :, :) )
   CALL INI_LIMA(XTSTEP,ZDZMIN,NSPLITR, NSPLITG)   ! 1/2 spectral warm cloud
 END IF
 !
@@ -317,7 +315,7 @@ ENDIF
 !
 IF (CCLOUD == 'LIMA') THEN
   IF (CGETCLOUD/='READ') THEN
-    CALL SET_CONC_LIMA(CGETCLOUD,XRHODREF,XRT,XSVT(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END))
+    CALL SET_CONC_LIMA(IMI,CGETCLOUD,XRHODREF,XRT,XSVT(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END))
   END IF
 END IF
 !
@@ -326,7 +324,6 @@ END IF
 !              ----------------------------------
 !
 !
-IMI = GET_CURRENT_MODEL_INDEX()
 !IF (CELEC /= 'NONE') THEN
 !  CALL INI_ELEC(IMI,TPINIFILE,XTSTEP,ZDZMIN,NSPLITR, &
 !                XDXX,XDYY,XDZZ,XDZX,XDZY            )
diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90
index 2548b6a26f8be699774ce2dfa6ace5a71d9d279d..140fb9caf5d8067eff5f5710b7e1cf7641cf9d43 100644
--- a/src/MNH/ini_modeln.f90
+++ b/src/MNH/ini_modeln.f90
@@ -1659,7 +1659,8 @@ IF ( CBUTYPE /= "NONE" .AND. NBUMOD == KMI ) THEN
              LNUMDIFU,LNUMDIFTH,LNUMDIFSV,                                    &
              LHORELAX_UVWTH,LHORELAX_RV, LHORELAX_RC,LHORELAX_RR,             &
              LHORELAX_RI,LHORELAX_RS,LHORELAX_RG, LHORELAX_RH,LHORELAX_TKE,   &
-             LHORELAX_SV,LVE_RELAX,LCHTRANS,LNUDGING,LDRAGTREE,LDEPOTREE,     &
+             LHORELAX_SV,LVE_RELAX,LVE_RELAX_GRD,                             &
+             LCHTRANS,LNUDGING,LDRAGTREE,LDEPOTREE,                           &
              CRAD,CDCONV,CSCONV,CTURB,CTURBDIM,CCLOUD                         )
 END IF
 !
diff --git a/src/MNH/ini_one_wayn.f90 b/src/MNH/ini_one_wayn.f90
index 582bcac1eedeaa9c95d03fcf22910247bccb5259..fffb5f8d6f5bd2a47ea253c49cd177eb765a4e8b 100644
--- a/src/MNH/ini_one_wayn.f90
+++ b/src/MNH/ini_one_wayn.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1999-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1999-2020 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -85,10 +85,11 @@ SUBROUTINE INI_ONE_WAY_n(KDAD,KMI,                                       &
 !!    J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!      J.Escobar : 18/12/2015 : Correction of bug in bound in // for NHALO <>1 
 !!      B.VIE   2016 : LIMA
-!!  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 14/02/2019: remove CLUOUT/CLUOUT0 and associated variables
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !  P. Wautelet 03/05/2019: restructuration of one_wayn and ini_one_wayn
+!  P. Wautelet 04/06/2020: correct call to Set_conc_lima + initialize ZCONCM
 !
 !------------------------------------------------------------------------------
 !
@@ -112,10 +113,10 @@ use mode_ll,             only: GET_CHILD_DIM_ll, GET_DIM_EXT_ll, GO_TOMODEL_ll,
                                LS_FORCING_ll, LWEST_ll, LEAST_ll, LNORTH_ll, LSOUTH_ll, &
                                SET_LSFIELD_1WAY_ll, UNSET_LSFIELD_1WAY_ll
 USE MODE_MODELN_HANDLER, only: GOTO_MODEL
+USE MODE_SET_CONC_LIMA
 !
 USE MODI_SET_CHEMAQ_1WAY
 USE MODI_SET_CONC_ICE_C1R3
-USE MODI_SET_CONC_LIMA
 USE MODI_SET_CONC_RAIN_C2R2
 !
 !
@@ -346,12 +347,13 @@ ENDIF
 IF (HCLOUD=="LIMA"  ) THEN
    IF (CCLOUD/="LIMA") THEN
       ALLOCATE(ZCONCM(SIZE(XRHODJ,1),SIZE(XRHODJ,2),SIZE(XRHODJ,3),NSV_LIMA_A(KMI)))
+      ZCONCM(:, :, :, :) = 0.
       IF (CCLOUD == "REVE") THEN
          ZINIT_TYPE = "INI1"
       ELSE
          ZINIT_TYPE = "NONE"
       END IF
-      CALL SET_CONC_LIMA (ZINIT_TYPE,XRHODREF,XRT,ZCONCM)
+      CALL SET_CONC_LIMA (KMI,ZINIT_TYPE,XRHODREF,XRT,ZCONCM)
       DO JSV=1,NSV_LIMA_A(KMI)
          CALL SET_LSFIELD_1WAY_ll(ZCONCM(:,:,:,JSV),&
               &ZTSVM(:,:,:,JSV-1+NSV_LIMA_BEG_A(KMI)),KMI)
diff --git a/src/MNH/latlon_to_xy.f90 b/src/MNH/latlon_to_xy.f90
index eded99bf5b50b499036ac347716a959a350e790f..320f6b1dc92ca461ff816bac677bb2315ec47805 100644
--- a/src/MNH/latlon_to_xy.f90
+++ b/src/MNH/latlon_to_xy.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1995-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1995-2020 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -54,14 +54,17 @@
 !!    remove the USE MODI_DEFAULT_DESFM      Apr. 17, 1996 (J.Stein)
 !!    no transfer of the file when closing   Dec. 09, 1996 (V.Masson)
 !!    + changes call to READ_HGRID
-!!  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 07/02/2019: force TYPE to a known value for IO_File_add2list
 !  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!  P. Wautelet 10/04/2020: add missing initializations (LATLON_TO_XY was not working)
 !----------------------------------------------------------------------------
 !
 !*    0.     DECLARATION
 !            -----------
 !
+use MODD_CONF,             only: CPROGRAM
+USE MODD_DIM_n
 USE MODD_GRID
 USE MODD_IO,               ONLY: TFILEDATA
 USE MODD_PGDDIM
@@ -69,10 +72,16 @@ USE MODD_PGDGRID
 USE MODD_PARAMETERS
 USE MODD_LUNIT
 !
+USE MODE_FIELD,            ONLY: INI_FIELD_LIST
 USE MODE_GRIDPROJ
 USE MODE_IO,               only: IO_Config_set, IO_Init
+use MODE_IO_FIELD_READ,    only: IO_Field_read
 USE MODE_IO_FILE,          only: IO_File_close, IO_File_open
 USE MODE_IO_MANAGE_STRUCT, only: IO_File_add2list
+use MODE_INIT_ll,          only: SET_DIM_ll, SET_JP_ll
+USE MODE_MODELN_HANDLER,   ONLY: GOTO_MODEL
+USE MODE_POS,              ONLY: POSNAM
+use MODE_SPLITTINGZ_ll
 !
 USE MODI_INI_CST
 USE MODI_READ_HGRID
@@ -99,6 +108,7 @@ INTEGER :: II,IJ               ! indexes of the point
 REAL    :: ZI,ZJ               ! fractionnal indexes of the point
 TYPE(TFILEDATA),POINTER :: TZINIFILE => NULL()
 TYPE(TFILEDATA),POINTER :: TZNMLFILE => NULL()
+LOGICAL :: GFOUND
 !
 !*    0.3    Declaration of namelists
 !            ------------------------
@@ -115,19 +125,38 @@ NAMELIST/NAM_INIFILE/ YINIFILE
 !*    1.     Initializations
 !            ---------------
 !
-CALL INI_CST
+CALL GOTO_MODEL(1)
+!
+CALL VERSION()
+!
+CPROGRAM='LAT2XY'
+!
+CALL IO_Init()
+!
+CALL INI_CST()
+!
+CALL INI_FIELD_LIST(1)
 !
 !*    2.     Reading of namelist file
 !            ------------------------
 !
-CALL IO_Init()
 !
 CALL IO_File_add2list(TZNMLFILE,'LATLON2XY1.nam','NML','READ')
 CALL IO_File_open(TZNMLFILE)
 INAM=TZNMLFILE%NLU
-READ(INAM,NAM_INIFILE)
 !
-READ(INAM,NAM_CONFIO)
+CALL POSNAM(INAM,'NAM_INIFILE',GFOUND)
+IF (GFOUND) THEN
+  READ(UNIT=INAM,NML=NAM_INIFILE)
+  PRINT*, '  namelist NAM_INIFILE read'
+END IF
+!
+CALL POSNAM(INAM,'NAM_CONFIO',GFOUND)
+IF (GFOUND) THEN
+  READ(UNIT=INAM,NML=NAM_CONFIO)
+  PRINT*, '  namelist NAM_CONFIO read'
+END IF
+!
 CALL IO_Config_set()
 CALL IO_File_close(TZNMLFILE)
 !
@@ -137,6 +166,15 @@ CALL IO_File_close(TZNMLFILE)
 CALL IO_File_add2list(TZINIFILE,TRIM(YINIFILE),'MNH','READ',KLFITYPE=2,KLFIVERB=2)
 CALL IO_File_open(TZINIFILE)
 !
+CALL IO_Field_read(TZINIFILE,'IMAX',  NIMAX)
+CALL IO_Field_read(TZINIFILE,'JMAX',  NJMAX)
+NKMAX = 1
+CALL IO_Field_read(TZINIFILE,'JPHEXT',JPHEXT)
+!
+CALL SET_JP_ll(1,JPHEXT,JPVEXT,JPHEXT)
+CALL SET_DIM_ll(NIMAX, NJMAX, NKMAX)
+CALL INI_PARAZ_ll(IRESP)
+!
 !*    2.     Reading of MESONH file
 !            ----------------------
 !
diff --git a/src/MNH/lima.f90 b/src/MNH/lima.f90
index 8c4538828cc25fc32b411db1fe67adff293687b8..828ca19e871ea25a1f1d20ba2e94dbc0e7e6a7a7 100644
--- a/src/MNH/lima.f90
+++ b/src/MNH/lima.f90
@@ -19,7 +19,8 @@ INTERFACE
                      PINPRC, PINDEP, PINPRR, PINPRI, PINPRS, PINPRG, PINPRH, &
                      PEVAP3D                                         )
 !
-USE MODD_IO, ONLY: TFILEDATA
+USE MODD_IO,  ONLY: TFILEDATA
+USE MODD_NSV, only: NSV_LIMA_BEG
 !
 INTEGER,                  INTENT(IN)    :: KKA   !near ground array index  
 INTEGER,                  INTENT(IN)    :: KKU   !uppest atmosphere array index
@@ -44,12 +45,12 @@ INTEGER,                  INTENT(IN)    :: NIMM       ! for array size declarati
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PDTHRAD    ! Theta at time t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT       ! Theta at time t
 REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT        ! Mixing ratios at time t
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVT       ! Concentrations at time t
+REAL, DIMENSION(:,:,:,NSV_LIMA_BEG:), INTENT(IN)    :: PSVT ! Concentrations at time t
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PW_NU      ! w for CCN activation
 !
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PTHS       ! Theta source
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRS        ! Mixing ratios sources
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVS       ! Concentrations sources
+REAL, DIMENSION(:,:,:,NSV_LIMA_BEG:), INTENT(INOUT) :: PSVS ! Concentration sources
 !
 REAL, DIMENSION(:,:),     INTENT(OUT)   :: PINPRC     ! Cloud instant precip
 REAL, DIMENSION(:,:),     INTENT(OUT)   :: PINDEP     ! Cloud droplets deposition
@@ -96,20 +97,21 @@ END MODULE MODI_LIMA
 !!    -------------
 !!      Original   15/03/2018
 !!
-!!      B.Vié  02/2019 : minor correction on budget
-!!  P. Wautelet 26/02/2020: bugfix: corrected condition to write budget CORR_BU_RRS
-!!      B.Vié 03/03/2020 : use DTHRAD instead of dT/dt in Smax diagnostic computation
+!  B. Vié         02/2019: minor correction on budget
+!  P. Wautelet 26/02/2020: bugfix: corrected condition to write budget CORR_BU_RRS
+!  B. Vié      03/03/2020: use DTHRAD instead of dT/dt in Smax diagnostic computation
+!  P. Wautelet 28/05/2020: bugfix: correct array start for PSVT and PSVS
+!-----------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
 !              ------------
 USE MODD_BUDGET,          ONLY: LBU_ENABLE, LBUDGET_TH, LBUDGET_RV, LBUDGET_RC, LBUDGET_RR,     &
                                 LBUDGET_RI, LBUDGET_RS, LBUDGET_RG, LBUDGET_RH, LBUDGET_SV
-USE MODD_CLOUDPAR_n,      ONLY: NSPLITR, NSPLITG
 USE MODD_CST,             ONLY: XCI, XCL, XCPD, XCPV, XLSTT, XLVTT, XTT, XRHOLW, XP00, XRD
 USE MODD_IO,              ONLY: TFILEDATA
-USE MODD_LUNIT_n,         ONLY: TLUOUT
-USE MODD_NSV,             ONLY: NSV_LIMA_NC, NSV_LIMA_NR, NSV_LIMA_CCN_FREE, NSV_LIMA_CCN_ACTI, &
-                                NSV_LIMA_SCAVMASS, NSV_LIMA_NI, NSV_LIMA_IFN_FREE,              &
+USE MODD_NSV,             ONLY: NSV_LIMA_BEG,                                                   &
+                                NSV_LIMA_NC, NSV_LIMA_NR, NSV_LIMA_CCN_FREE, NSV_LIMA_CCN_ACTI, &
+                                NSV_LIMA_NI, NSV_LIMA_IFN_FREE,                                 &
                                 NSV_LIMA_IFN_NUCL, NSV_LIMA_IMM_NUCL, NSV_LIMA_HOM_HAZE
 USE MODD_PARAMETERS,      ONLY: JPHEXT, JPVEXT
 USE MODD_PARAM_LIMA,      ONLY: LCOLD, LRAIN, LWARM, NMOD_CCN, NMOD_IFN, NMOD_IMM, LHHONI,      &
@@ -155,12 +157,12 @@ INTEGER,                  INTENT(IN)    :: NIMM       ! for array size declarati
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PDTHRAD    ! Theta at time t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT       ! Theta at time t
 REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT        ! Mixing ratios at time t
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVT       ! Concentrations at time t
+REAL, DIMENSION(:,:,:,NSV_LIMA_BEG:), INTENT(IN)    :: PSVT ! Concentrations at time t
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PW_NU      ! w for CCN activation
 !
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PTHS       ! Theta source
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRS        ! Mixing ratios sources
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVS       ! Concentrations sources
+REAL, DIMENSION(:,:,:,NSV_LIMA_BEG:), INTENT(INOUT) :: PSVS ! Concentration sources
 !
 REAL, DIMENSION(:,:),     INTENT(OUT)   :: PINPRC     ! Cloud instant precip
 REAL, DIMENSION(:,:),     INTENT(OUT)   :: PINDEP     ! Cloud droplets deposition
diff --git a/src/MNH/lima_adjust.f90 b/src/MNH/lima_adjust.f90
index e9c32bb0b1f2d0dbaa9350bf39874076ba7376cf..9deec2f3ba0354fad23cecb92c5dd1b4d8c1a527 100644
--- a/src/MNH/lima_adjust.f90
+++ b/src/MNH/lima_adjust.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2013-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2013-2020 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -15,7 +15,8 @@ INTERFACE
                              PRT, PRS, PSVT, PSVS,                             &
                              PTHS, PSRCS, PCLDFR                               )
 !
-USE MODD_IO, ONLY: TFILEDATA
+USE MODD_IO,  ONLY: TFILEDATA
+USE MODD_NSV, only: NSV_LIMA_BEG
 !
 INTEGER,                  INTENT(IN)   :: KRR        ! Number of moist variables
 INTEGER,                  INTENT(IN)   :: KMI        ! Model index 
@@ -41,9 +42,9 @@ REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT       ! m.r. at t
 !
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRS       ! m.r. source
 !
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVT      ! Concentrations at t
+REAL, DIMENSION(:,:,:,NSV_LIMA_BEG:), INTENT(IN)    :: PSVT ! Concentrations at time t
 !
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVS      ! Concentration source
+REAL, DIMENSION(:,:,:,NSV_LIMA_BEG:), INTENT(INOUT) :: PSVS ! Concentration sources
 !
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PTHS      ! Theta source
 !
@@ -134,10 +135,10 @@ END MODULE MODI_LIMA_ADJUST
 !!      Original             ??/??/13 
 !!      C. Barthe  * LACy*   jan. 2014  add budgets
 !!      JP Chaboureau *LA*   March 2014  fix the calculation of icy cloud fraction
-!!  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 10/04/2019: replace ABORT and STOP calls by Print_msg
 !  P. Wautelet 28/05/2019: move COUNTJV function to tools.f90
-!
+!  P. Wautelet 28/05/2020: bugfix: correct array start for PSVT and PSVS
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -193,9 +194,9 @@ REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT       ! m.r. at t
 !
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRS       ! m.r. source
 !
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVT      ! Concentrations at t
+REAL, DIMENSION(:,:,:,NSV_LIMA_BEG:), INTENT(IN)    :: PSVT ! Concentrations at time t
 !
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVS      ! Concentration source
+REAL, DIMENSION(:,:,:,NSV_LIMA_BEG:), INTENT(INOUT) :: PSVS ! Concentration sources
 !
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PTHS      ! Theta source
 !
diff --git a/src/MNH/lima_cold.f90 b/src/MNH/lima_cold.f90
index 28b88ca60f3aa5848d53e9e1863dc8ed44ecf251..f5c8726ede8158f27e61371666eb3c98522c6842 100644
--- a/src/MNH/lima_cold.f90
+++ b/src/MNH/lima_cold.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 2013-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2013-2020 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.
 !-----------------------------------------------------------------
 !      #####################
@@ -16,7 +16,9 @@ INTERFACE
                            PTHS, PRS, PSVS,                                &
                            PINPRS, PINPRG, PINPRH)
 !
-LOGICAL,                  INTENT(IN)    :: OSEDI   ! switch to activate the 
+USE MODD_NSV,   only: NSV_LIMA_BEG
+!
+LOGICAL,                  INTENT(IN)    :: OSEDI   ! switch to activate the
                                                    ! cloud ice sedimentation
 LOGICAL,                  INTENT(IN)    :: OHHONI  ! enable haze freezing
 INTEGER,                  INTENT(IN)    :: KSPLITG ! Number of small time step 
@@ -39,11 +41,11 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABSM  ! abs. pressure at time t-dt
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT    ! Theta at time t
 REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT     ! m.r. at t 
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVT    ! Concentrations at t 
+REAL, DIMENSION(:,:,:,NSV_LIMA_BEG:), INTENT(IN)    :: PSVT ! Concentrations at time t
 !
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PTHS    ! Theta source
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRS     ! m.r. source
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVS    ! Concentrations source
+REAL, DIMENSION(:,:,:,NSV_LIMA_BEG:), INTENT(INOUT) :: PSVS ! Concentration sources
 !
 REAL, DIMENSION(:,:),     INTENT(INOUT) :: PINPRS  ! Snow instant precip
 REAL, DIMENSION(:,:),     INTENT(INOUT) :: PINPRG  ! Graupel instant precip
@@ -106,8 +108,8 @@ END MODULE MODI_LIMA_COLD
 !!    MODIFICATIONS
 !!    -------------
 !!      Original             ??/??/13 
-!!  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 28/05/2020: bugfix: correct array start for PSVT and PSVS
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -151,11 +153,11 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABSM  ! abs. pressure at time t-dt
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT    ! Theta at time t
 REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT     ! m.r. at t 
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVT    ! Concentrations at t 
+REAL, DIMENSION(:,:,:,NSV_LIMA_BEG:), INTENT(IN)    :: PSVT ! Concentrations at time t
 !
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PTHS    ! Theta source
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRS     ! m.r. source
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVS    ! Concentrations source
+REAL, DIMENSION(:,:,:,NSV_LIMA_BEG:), INTENT(INOUT) :: PSVS ! Concentration sources
 !
 REAL, DIMENSION(:,:),     INTENT(INOUT) :: PINPRS  ! Snow instant precip
 REAL, DIMENSION(:,:),     INTENT(INOUT) :: PINPRG  ! Graupel instant precip
@@ -349,8 +351,7 @@ IF (LNUCL) THEN
                                PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT,    &
                                PTHS, PRVS, PRCS, PRRS, PRIS, PRGS,          &
                                PCCT,                                        &
-                               PCCS, PCRS, PNFS,                            &
-                               PCIS, PNIS, PNHS                             )
+                               PCCS, PCRS, PNFS, PCIS, PNHS                 )
    END IF
 !
 END IF
diff --git a/src/MNH/lima_cold_hom_nucl.f90 b/src/MNH/lima_cold_hom_nucl.f90
index f6c3f42114c5cbff0cece4bbef71e1eaf538c2cb..48e7cab39d0c14676c4cdb76ee7e8b42e6e5d69d 100644
--- a/src/MNH/lima_cold_hom_nucl.f90
+++ b/src/MNH/lima_cold_hom_nucl.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2013-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2013-2020 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -14,8 +14,7 @@ INTERFACE
                            PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT,  &
                            PTHS, PRVS, PRCS, PRRS, PRIS, PRGS,        &
                            PCCT,                                      &
-                           PCCS, PCRS, PNFS,                          &
-                           PCIS, PNIS, PNHS                           )
+                           PCCS, PCRS, PNFS, PCIS, PNHS               )
 !
 LOGICAL,                  INTENT(IN)    :: OHHONI  ! enable haze freezing
 REAL,                     INTENT(IN)    :: PTSTEP  ! Time step          
@@ -53,8 +52,6 @@ REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PNFS    ! CCN C. available source
                                                    !HOMOGENEOUS nucleation of haze
 !
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PCIS    ! Ice crystal C. source
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PNIS    ! Activated ice nuclei C. source
-                                                   !for IMMERSION
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PNHS    ! haze homogeneous freezing
 !
 END SUBROUTINE LIMA_COLD_HOM_NUCL
@@ -68,8 +65,7 @@ END MODULE MODI_LIMA_COLD_HOM_NUCL
                            PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT,  &
                            PTHS, PRVS, PRCS, PRRS, PRIS, PRGS,        &
                            PCCT,                                      &
-                           PCCS, PCRS, PNFS,                          &
-                           PCIS, PNIS, PNHS                           )
+                           PCCS, PCRS, PNFS, PCIS, PNHS               )
 !     ######################################################################
 !
 !!    PURPOSE
@@ -90,9 +86,10 @@ END MODULE MODI_LIMA_COLD_HOM_NUCL
 !!      Original             ??/??/13 
 !!      C. Barthe  * LACy*   jan. 2014  add budgets
 !!      B.Vie 10/2016 Bug zero division
-!!  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
+!  M. Leriche     05/2019: suppress unused actived coated IN (immersion) source 
 !  P. Wautelet 28/05/2019: move COUNTJV function to tools.f90
-!
+!  B. Vie         03/2020: correction of budgets parallelization
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -157,8 +154,6 @@ REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PNFS    ! CCN C. available source
                                                    !HOMOGENEOUS nucleation of haze
 !
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PCIS    ! Ice crystal C. source
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PNIS    ! Activated ice nuclei C. source
-                                                   !for IMMERSION
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PNHS    ! haze homogeneous freezing
 !
 !*       0.2   Declarations of local variables :
@@ -184,8 +179,6 @@ REAL, DIMENSION(:),   ALLOCATABLE :: ZCCS    ! Cloud water conc. source
 REAL, DIMENSION(:),   ALLOCATABLE :: ZCRS    ! Rain water conc. source
 REAL, DIMENSION(:,:), ALLOCATABLE :: ZNFS    ! available nucleus conc. source
 REAL, DIMENSION(:),   ALLOCATABLE :: ZCIS    ! Pristine ice conc. source
-REAL, DIMENSION(:,:), ALLOCATABLE :: ZNIS    ! Nucleated Ice nuclei conc. source 
-                                             !by Immersion
 REAL, DIMENSION(:),   ALLOCATABLE :: ZZNHS   ! Nucleated Ice nuclei conc. source
                                              !by Homogeneous freezing
 !
@@ -283,7 +276,6 @@ IF (INEGT.GT.0) THEN
    ALLOCATE(ZCIS(INEGT))
    !
    ALLOCATE(ZNFS(INEGT,NMOD_CCN))
-   ALLOCATE(ZNIS(INEGT,NMOD_IMM))
    ALLOCATE(ZZNHS(INEGT))
    !
    ALLOCATE(ZRHODREF(INEGT)) 
@@ -316,9 +308,6 @@ IF (INEGT.GT.0) THEN
       DO JMOD_CCN = 1, NMOD_CCN
          ZNFS(JL,JMOD_CCN) = PNFS(I1(JL),I2(JL),I3(JL),JMOD_CCN)
       ENDDO
-      DO JMOD_IMM = 1, NMOD_IMM
-         ZNIS(JL,JMOD_IMM) = PNIS(I1(JL),I2(JL),I3(JL),JMOD_IMM)
-      ENDDO
       ZZNHS(JL) = ZNHS(I1(JL),I2(JL),I3(JL))
       ZRHODREF(JL) = PRHODREF(I1(JL),I2(JL),I3(JL))
       ZZT(JL)      = ZT(I1(JL),I2(JL),I3(JL))
@@ -443,33 +432,33 @@ IF (INEGT.GT.0) THEN
       ZTHS(:) = ZTHS(:) + ZZW(:) * (ZLSFACT(:)-ZLVFACT(:)) ! f(L_s*(RHHONI))
       ZCIS(:) = ZCIS(:) + ZZX(:)
 !
+!
+      ZW(:,:,:)   = PRVS(:,:,:)
+      PRVS(:,:,:) = UNPACK( ZRVS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
+      ZW(:,:,:)   = PRIS(:,:,:)
+      PRIS(:,:,:) = UNPACK( ZRIS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
+      ZW(:,:,:)   = PTHS(:,:,:)
+      PTHS(:,:,:) = UNPACK( ZTHS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
+      ZW(:,:,:)   = PCIS(:,:,:)
+      PCIS(:,:,:) = UNPACK( ZCIS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
    END IF ! OHHONI
+END IF ! INEGT (exclude calls to BUDGET from INEGT test
 !
 ! Budget storage
-   IF (NBUMOD==KMI .AND. LBU_ENABLE .AND. OHHONI .AND. NMOD_CCN.GT.0 ) THEN
-     IF (LBUDGET_TH) CALL BUDGET (                                                 &
-                     UNPACK(ZTHS(:),MASK=GNEGT(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),&
-                                                                 4,'HONH_BU_RTH')
-     IF (LBUDGET_RV) CALL BUDGET (                                                 &
-                     UNPACK(ZRVS(:),MASK=GNEGT(:,:,:),FIELD=PRVS)*PRHODJ(:,:,:),&
-                                                                 6,'HONH_BU_RRV')
-     IF (LBUDGET_RI) CALL BUDGET (                                                 &
-                     UNPACK(ZRIS(:),MASK=GNEGT(:,:,:),FIELD=PRIS)*PRHODJ(:,:,:),&
-                                                                 9,'HONH_BU_RRI')
-     IF (LBUDGET_SV) THEN
-       CALL BUDGET ( UNPACK(ZCIS(:),MASK=GNEGT(:,:,:),FIELD=PCIS)*PRHODJ(:,:,:),&
-                                                          12+NSV_LIMA_NI,'HONH_BU_RSV') ! RCI
-       IF (NMOD_CCN.GE.1) THEN
-          DO JL=1, NMOD_CCN
-             CALL BUDGET ( UNPACK(ZNFS(:,JL),MASK=GNEGT(:,:,:),FIELD=PNFS(:,:,:,JL))*PRHODJ(:,:,:),&
-                  12+NSV_LIMA_CCN_FREE+JL-1,'HONH_BU_RSV') 
-          END DO
-          CALL BUDGET ( UNPACK(ZZNHS(:),MASK=GNEGT(:,:,:),FIELD=ZNHS(:,:,:))*PRHODJ(:,:,:),&
-                  12+NSV_LIMA_HOM_HAZE,'HONH_BU_RSV') 
-
-       END IF
-     END IF
+IF (NBUMOD==KMI .AND. LBU_ENABLE .AND. OHHONI .AND. NMOD_CCN.GT.0 ) THEN
+   IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'HONH_BU_RTH')
+   IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),6,'HONH_BU_RRV')
+   IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9,'HONH_BU_RRI')
+   IF (LBUDGET_SV) THEN
+      CALL BUDGET (PCIS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NI,'HONH_BU_RSV')
+      IF (NMOD_CCN.GE.1) THEN
+         DO JL=1, NMOD_CCN
+            CALL BUDGET (PNFS(:,:,:,JL)*PRHODJ(:,:,:),12+NSV_LIMA_CCN_FREE+JL-1,'HONH_BU_RSV') 
+         END DO
+         CALL BUDGET (PNHS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_HOM_HAZE,'HONH_BU_RSV') 
+      END IF
    END IF
+END IF
 !
 !
 !-------------------------------------------------------------------------------
@@ -483,44 +472,48 @@ IF (INEGT.GT.0) THEN
 !                 -> Pruppacher(1995)
 !
 IF (LWARM) THEN
-   ZZW(:) = 0.0
-   ZZX(:) = 0.0
-   WHERE( (ZZT(:)<XTT-35.0) .AND. (ZCCT(:)>XCTMIN(2)) .AND. (ZRCT(:)>XRTMIN(2)) )
-      ZLBDAC(:) = XLBC*ZCCT(:) / (ZRCT(:)) ! Lambda_c**3
-      ZZX(:) = 1.0 / ( 1.0 + (XC_HONC/ZLBDAC(:))*PTSTEP*                      &
-           EXP( XTEXP1_HONC + ZTCELSIUS(:)*(                        &
-           XTEXP2_HONC + ZTCELSIUS(:)*(                        &
-           XTEXP3_HONC + ZTCELSIUS(:)*(                        &
-           XTEXP4_HONC + ZTCELSIUS(:)*XTEXP5_HONC))) ) )**XNUC
-      ZZW(:) = ZCCS(:) * (1.0 - ZZX(:))                                  ! CCHONI
-!                                                                       
-      ZCCS(:) = ZCCS(:) - ZZW(:)
-      ZCIS(:) = ZCIS(:) + ZZW(:)
-!
-      ZZW(:) = ZRCS(:) * (1.0 - ZZX(:))                                  ! RCHONI
-!                                                                       
-      ZRCS(:) = ZRCS(:) - ZZW(:)
-      ZRIS(:) = ZRIS(:) + ZZW(:)
-      ZTHS(:) = ZTHS(:) + ZZW(:) * (ZLSFACT(:)-ZLVFACT(:)) ! f(L_f*(RCHONI))
-   END WHERE
-!
+   IF (INEGT.GT.0) THEN
+      ZZW(:) = 0.0
+      ZZX(:) = 0.0
+      WHERE( (ZZT(:)<XTT-35.0) .AND. (ZCCT(:)>XCTMIN(2)) .AND. (ZRCT(:)>XRTMIN(2)) )
+         ZLBDAC(:) = XLBC*ZCCT(:) / (ZRCT(:)) ! Lambda_c**3
+         ZZX(:) = 1.0 / ( 1.0 + (XC_HONC/ZLBDAC(:))*PTSTEP*                      &
+              EXP( XTEXP1_HONC + ZTCELSIUS(:)*(                        &
+              XTEXP2_HONC + ZTCELSIUS(:)*(                        &
+              XTEXP3_HONC + ZTCELSIUS(:)*(                        &
+              XTEXP4_HONC + ZTCELSIUS(:)*XTEXP5_HONC))) ) )**XNUC
+         ZZW(:) = ZCCS(:) * (1.0 - ZZX(:))                                  ! CCHONI
+         !                                                                       
+         ZCCS(:) = ZCCS(:) - ZZW(:)
+         ZCIS(:) = ZCIS(:) + ZZW(:)
+         !
+         ZZW(:) = ZRCS(:) * (1.0 - ZZX(:))                                  ! RCHONI
+         !                                                                       
+         ZRCS(:) = ZRCS(:) - ZZW(:)
+         ZRIS(:) = ZRIS(:) + ZZW(:)
+         ZTHS(:) = ZTHS(:) + ZZW(:) * (ZLSFACT(:)-ZLVFACT(:)) ! f(L_f*(RCHONI))
+      END WHERE
+      !
+      ZW(:,:,:)   = PRCS(:,:,:)
+      PRCS(:,:,:) = UNPACK( ZRCS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
+      ZW(:,:,:)   = PRIS(:,:,:)
+      PRIS(:,:,:) = UNPACK( ZRIS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
+      ZW(:,:,:)   = PTHS(:,:,:)
+      PTHS(:,:,:) = UNPACK( ZTHS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
+      ZW(:,:,:)   = PCCS(:,:,:)
+      PCCS(:,:,:) = UNPACK( ZCCS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
+      ZW(:,:,:)   = PCIS(:,:,:)
+      PCIS(:,:,:) = UNPACK( ZCIS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
+   END IF
 ! Budget storage
    IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
-     IF (LBUDGET_TH) CALL BUDGET (                                              &
-                     UNPACK(ZTHS(:),MASK=GNEGT(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),&
-                                                                 4,'HONC_BU_RTH')
-     IF (LBUDGET_RC) CALL BUDGET (                                              &
-                     UNPACK(ZRCS(:),MASK=GNEGT(:,:,:),FIELD=PRCS)*PRHODJ(:,:,:),&
-                                                                 7,'HONC_BU_RRC')
-     IF (LBUDGET_RI) CALL BUDGET (                                              &
-                     UNPACK(ZRIS(:),MASK=GNEGT(:,:,:),FIELD=PRIS)*PRHODJ(:,:,:),&
-                                                                 9,'HONC_BU_RRI')
-     IF (LBUDGET_SV) THEN
-       CALL BUDGET ( UNPACK(ZCCS(:),MASK=GNEGT(:,:,:),FIELD=PCCS)*PRHODJ(:,:,:),&
-                                                          12+NSV_LIMA_NC,'HONC_BU_RSV')
-       CALL BUDGET ( UNPACK(ZCIS(:),MASK=GNEGT(:,:,:),FIELD=PCIS)*PRHODJ(:,:,:),&
-                                                          12+NSV_LIMA_NI,'HONC_BU_RSV')
-     END IF
+      IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'HONC_BU_RTH')
+      IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7,'HONC_BU_RRC')
+      IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9,'HONC_BU_RRI')
+      IF (LBUDGET_SV) THEN
+         CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NC,'HONC_BU_RSV')
+         CALL BUDGET (PCIS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NI,'HONC_BU_RSV')
+      END IF
    END IF
 END IF
 !
@@ -535,31 +528,34 @@ END IF
 !  Compute the drop homogeneous nucleation source: RRHONG
 !
 IF (LWARM .AND. LRAIN) THEN
-   ZZW(:) = 0.0
-   WHERE( (ZZT(:)<XTT-35.0) .AND. (ZRRS(:)>XRTMIN(3)/PTSTEP) )
-      ZZW(:)  = ZRRS(:) ! Instantaneous freezing of the raindrops
-      ZRRS(:) = ZRRS(:) - ZZW(:)
-      ZRGS(:) = ZRGS(:) + ZZW(:)
-      ZTHS(:) = ZTHS(:) + ZZW(:)*(ZLSFACT(:)-ZLVFACT(:)) ! f(L_f*(RRHONG))
-!
-      ZCRS(:) = 0.0     ! No more raindrops when T<-35 C
-   ENDWHERE
-!
-! Budget storage
+   IF (INEGT.GT.0) THEN
+      ZZW(:) = 0.0
+      WHERE( (ZZT(:)<XTT-35.0) .AND. (ZRRS(:)>XRTMIN(3)/PTSTEP) )
+         ZZW(:)  = ZRRS(:) ! Instantaneous freezing of the raindrops
+         ZRRS(:) = ZRRS(:) - ZZW(:)
+         ZRGS(:) = ZRGS(:) + ZZW(:)
+         ZTHS(:) = ZTHS(:) + ZZW(:)*(ZLSFACT(:)-ZLVFACT(:)) ! f(L_f*(RRHONG))
+         !
+         ZCRS(:) = 0.0     ! No more raindrops when T<-35 C
+      ENDWHERE
+      !
+      ZW(:,:,:)   = PRRS(:,:,:)
+      PRRS(:,:,:) = UNPACK( ZRRS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
+      ZW(:,:,:)   = PRGS(:,:,:)
+      PRGS(:,:,:) = UNPACK( ZRGS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
+      ZW(:,:,:)   = PTHS(:,:,:)
+      PTHS(:,:,:) = UNPACK( ZTHS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
+      ZW(:,:,:)   = PCRS(:,:,:)
+      PCRS(:,:,:) = UNPACK( ZCRS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
+   END IF
+      ! Budget storage
    IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
-     IF (LBUDGET_TH) CALL BUDGET (                                                 &
-                     UNPACK(ZTHS(:),MASK=GNEGT(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),&
-                                                                 4,'HONR_BU_RTH')
-     IF (LBUDGET_RR) CALL BUDGET (                                                 &
-                     UNPACK(ZRRS(:),MASK=GNEGT(:,:,:),FIELD=PRRS)*PRHODJ(:,:,:),&
-                                                                 8,'HONR_BU_RRR')
-     IF (LBUDGET_RG) CALL BUDGET (                                                 &
-                     UNPACK(ZRGS(:),MASK=GNEGT(:,:,:),FIELD=PRGS)*PRHODJ(:,:,:),&
-                                                                11,'HONR_BU_RRG')
-     IF (LBUDGET_SV) THEN
-       CALL BUDGET ( UNPACK(ZCRS(:),MASK=GNEGT(:,:,:),FIELD=PCRS)*PRHODJ(:,:,:),&
-                                                          12+NSV_LIMA_NR,'HONR_BU_RSV')
-     END IF
+      IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'HONR_BU_RTH')
+      IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8,'HONR_BU_RRR')
+      IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),11,'HONR_BU_RRG')
+      IF (LBUDGET_SV) THEN
+         CALL BUDGET (PCRS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NR,'HONR_BU_RSV')
+      END IF
    END IF
 END IF
 !
@@ -570,27 +566,7 @@ END IF
 !*       4.     Unpack variables, clean
 !	        -----------------------
 !
-!
-! End of homogeneous nucleation processes
-!
-   ZW(:,:,:)   = PRVS(:,:,:)
-   PRVS(:,:,:) = UNPACK( ZRVS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
-   ZW(:,:,:)   = PRCS(:,:,:)
-   PRCS(:,:,:) = UNPACK( ZRCS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
-   ZW(:,:,:)   = PRRS(:,:,:)
-   PRRS(:,:,:) = UNPACK( ZRRS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
-   ZW(:,:,:)   = PRIS(:,:,:)
-   PRIS(:,:,:) = UNPACK( ZRIS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
-   ZW(:,:,:)   = PRGS(:,:,:)
-   PRGS(:,:,:) = UNPACK( ZRGS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
-   ZW(:,:,:)   = PTHS(:,:,:)
-   PTHS(:,:,:) = UNPACK( ZTHS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
-   ZW(:,:,:)   = PCCS(:,:,:)
-   PCCS(:,:,:) = UNPACK( ZCCS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
-   ZW(:,:,:)   = PCRS(:,:,:)
-   PCRS(:,:,:) = UNPACK( ZCRS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
-   ZW(:,:,:)   = PCIS(:,:,:)
-   PCIS(:,:,:) = UNPACK( ZCIS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
+IF (INEGT.GT.0) THEN
 !   
    DEALLOCATE(ZRVT) 
    DEALLOCATE(ZRCT) 
@@ -614,7 +590,6 @@ END IF
    DEALLOCATE(ZCIS)
 !
    DEALLOCATE(ZNFS)
-   DEALLOCATE(ZNIS)
    DEALLOCATE(ZZNHS)
 !
    DEALLOCATE(ZRHODREF) 
@@ -632,57 +607,6 @@ END IF
    DEALLOCATE(ZZX)
    DEALLOCATE(ZZY)
 !
-ELSE
-!
-! Advance the budget calls
-!
-   IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
-     IF (LBUDGET_TH) THEN
-       ZW(:,:,:) = PTHS(:,:,:)*PRHODJ(:,:,:)
-       IF( OHHONI .AND. NMOD_CCN.GT.0 ) CALL BUDGET (ZW,4,'HONH_BU_RTH')
-       IF (LWARM) CALL BUDGET (ZW,4,'HONC_BU_RTH')
-       IF (LWARM .AND. LRAIN) CALL BUDGET (ZW,4,'HONR_BU_RTH')
-     ENDIF
-     IF (LBUDGET_RV) THEN
-       ZW(:,:,:) = PRVS(:,:,:)*PRHODJ(:,:,:)
-       IF( OHHONI .AND. NMOD_CCN.GT.0 ) CALL BUDGET (ZW,6,'HONH_BU_RRV')
-     ENDIF
-     IF (LBUDGET_RC) THEN
-       ZW(:,:,:) = PRCS(:,:,:)*PRHODJ(:,:,:)
-       IF (LWARM) CALL BUDGET (ZW,7,'HONC_BU_RRC')
-     ENDIF
-     IF (LBUDGET_RR) THEN
-       ZW(:,:,:) = PRRS(:,:,:)*PRHODJ(:,:,:)
-       IF (LWARM .AND. LRAIN) CALL BUDGET (ZW,8,'HONR_BU_RRR')
-     ENDIF
-     IF (LBUDGET_RI) THEN
-       ZW(:,:,:) = PRIS(:,:,:)*PRHODJ(:,:,:)
-       IF( OHHONI .AND. NMOD_CCN.GT.0 ) CALL BUDGET (ZW,9,'HONH_BU_RRI')
-       IF (LWARM) CALL BUDGET (ZW,9,'HONC_BU_RRI')
-     ENDIF
-     IF (LBUDGET_RG) THEN
-       ZW(:,:,:) = PRGS(:,:,:)*PRHODJ(:,:,:)
-       IF (LWARM .AND. LRAIN) CALL BUDGET (ZW,11,'HONR_BU_RRG')
-     ENDIF
-     IF (LBUDGET_SV) THEN
-       ZW(:,:,:) = PCCS(:,:,:)*PRHODJ(:,:,:)
-       IF (LWARM) CALL BUDGET (ZW,12+NSV_LIMA_NC,'HONC_BU_RSV')
-       ZW(:,:,:) = PCRS(:,:,:)*PRHODJ(:,:,:)
-       IF (LWARM .AND. LRAIN) CALL BUDGET (ZW,12+NSV_LIMA_NR,'HONR_BU_RSV')
-       ZW(:,:,:) = PCIS(:,:,:)*PRHODJ(:,:,:)
-       IF( OHHONI .AND. NMOD_CCN.GT.0 ) CALL BUDGET (ZW,12+NSV_LIMA_NI,'HONH_BU_RSV')
-       IF (LWARM) CALL BUDGET (ZW,12+NSV_LIMA_NI,'HONC_BU_RSV')
-       IF( OHHONI .AND. NMOD_CCN.GT.0 ) THEN
-          DO JL=1, NMOD_CCN
-             ZW(:,:,:) = PNFS(:,:,:,JL)*PRHODJ(:,:,:)
-             CALL BUDGET (ZW,12+NSV_LIMA_CCN_FREE+JL-1,'HONH_BU_RSV') 
-          END DO
-          ZW(:,:,:) = ZNHS(:,:,:)*PRHODJ(:,:,:)
-          CALL BUDGET (ZW,12+NSV_LIMA_HOM_HAZE,'HONH_BU_RSV')
-       END IF
-     END IF
-   END IF
-!
 END IF ! INEGT>0
 !
 !
diff --git a/src/MNH/lima_cold_slow_processes.f90 b/src/MNH/lima_cold_slow_processes.f90
index 1973c65f3d23fa1a538243e90ac5371ad626d50c..f65625b0eb8fe18a6ece811c4d1b71242abcbd6b 100644
--- a/src/MNH/lima_cold_slow_processes.f90
+++ b/src/MNH/lima_cold_slow_processes.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2013-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2013-2020 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -77,8 +77,9 @@ END MODULE MODI_LIMA_COLD_SLOW_PROCESSES
 !!    -------------
 !!      Original             ??/??/13 
 !!      C. Barthe  * LACy *  jan. 2014   add budgets
-!!  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 28/05/2019: move COUNTJV function to tools.f90
+!  B. Vie         03/2020: correction of budgets parallelization
 !
 !-------------------------------------------------------------------------------
 !
@@ -351,25 +352,27 @@ IF( IMICRO >= 1 ) THEN
          ZZW(:) = ZZW(:)*( XC0DEPSI+XC1DEPSI*ZCJ(:) )/( XR0DEPSI+XR1DEPSI*ZCJ(:) )
          ZCIS(:) = ZCIS(:) + ZZW(:)
       END WHERE
+      ZW(:,:,:) = PRIS(:,:,:)
+      PRIS(:,:,:) = UNPACK( ZRIS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
+      ZW(:,:,:) = PRSS(:,:,:)
+      PRSS(:,:,:) = UNPACK( ZRSS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
+      ZW(:,:,:) = PCIS(:,:,:)
+      PCIS(:,:,:) = UNPACK( ZCIS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
+   END IF ! IMICRO
 !
 ! Budget storage
-      IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
-        IF (LBUDGET_RI) CALL BUDGET (                                          &
-                   UNPACK(ZRIS(:),MASK=GMICRO(:,:,:),FIELD=PRIS)*PRHODJ(:,:,:),&
-                                                                9,'CNVI_BU_RRI')
-        IF (LBUDGET_RS) CALL BUDGET (                                          &
-                   UNPACK(ZRSS(:),MASK=GMICRO(:,:,:),FIELD=PRSS)*PRHODJ(:,:,:),&
-                                                               10,'CNVI_BU_RRS')
-        IF (LBUDGET_SV) CALL BUDGET (                                          &
-                   UNPACK(ZCIS(:),MASK=GMICRO(:,:,:),FIELD=PCIS)*PRHODJ(:,:,:), &
-                                                   12+NSV_LIMA_NI,'CNVI_BU_RSV')
-        END IF
+   IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
+      IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9,'CNVI_BU_RRI')
+      IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),10,'CNVI_BU_RRS')
+      IF (LBUDGET_SV) CALL BUDGET (PCIS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NI,'CNVI_BU_RSV')
+   END IF
 !
 !
 !*       2.2    Deposition of water vapor on r_s: RVDEPS
 !        -----------------------------------------------
 !
 !
+   IF( IMICRO >= 1 ) THEN
       ZZW(:) = 0.0
       WHERE ( (ZRST(:)>XRTMIN(5)) .AND. (ZRSS(:)>ZRTMIN(5)) )
          ZZW(:) = ( ZSSI(:)/(ZRHODREF(:)*ZAI(:)) ) *                               &
@@ -380,25 +383,27 @@ IF( IMICRO >= 1 ) THEN
          ZRVS(:) = ZRVS(:) - ZZW(:)
          ZTHS(:) = ZTHS(:) + ZZW(:)*ZLSFACT(:)
       END WHERE
-!
+      !
+      ZW(:,:,:) = PRVS(:,:,:)
+      PRVS(:,:,:) = UNPACK( ZRVS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
+      ZW(:,:,:) = PRSS(:,:,:)
+      PRSS(:,:,:) = UNPACK( ZRSS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
+      ZW(:,:,:) = PTHS(:,:,:)
+      PTHS(:,:,:) = UNPACK( ZTHS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
+   END IF
 ! Budget storage
-      IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
-        IF (LBUDGET_TH) CALL BUDGET (                                                 &
-                   UNPACK(ZTHS(:),MASK=GMICRO(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),&
-                                                                4,'DEPS_BU_RTH')
-        IF (LBUDGET_RV) CALL BUDGET (                                                 &
-                   UNPACK(ZRVS(:),MASK=GMICRO(:,:,:),FIELD=PRVS)*PRHODJ(:,:,:),&
-                                                                6,'DEPS_BU_RRV')
-        IF (LBUDGET_RS) CALL BUDGET (                                                 &
-                   UNPACK(ZRSS(:),MASK=GMICRO(:,:,:),FIELD=PRSS)*PRHODJ(:,:,:),&
-                                                               10,'DEPS_BU_RRS')
-      END IF
+   IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
+      IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'DEPS_BU_RTH')
+      IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),6,'DEPS_BU_RRV')
+      IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),10,'DEPS_BU_RRS')
+   END IF
 !
 !
 !*       2.3    Conversion of pristine ice to r_s: RICNVS
 !        ------------------------------------------------
 !
 !
+   IF( IMICRO >= 1 ) THEN
       ZZW(:) = 0.0
       WHERE ( (ZLBDAI(:)<XLBDAICNVS_LIM) .AND. (ZCIT(:)>XCTMIN(4)) &
                                          .AND. (ZSSI(:)>0.0)       )
@@ -417,24 +422,26 @@ IF( IMICRO >= 1 ) THEN
          ZCIS(:) = ZCIS(:) - ZZW(:)
       END WHERE
 !
+      ZW(:,:,:) = PRIS(:,:,:)
+      PRIS(:,:,:) = UNPACK( ZRIS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
+      ZW(:,:,:) = PRSS(:,:,:)
+      PRSS(:,:,:) = UNPACK( ZRSS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
+      ZW(:,:,:) = PCIS(:,:,:)
+      PCIS(:,:,:) = UNPACK( ZCIS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
+   END IF
 ! Budget storage
-      IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
-        IF (LBUDGET_RI) CALL BUDGET (                                          &
-                   UNPACK(ZRIS(:),MASK=GMICRO(:,:,:),FIELD=PRIS)*PRHODJ(:,:,:),&
-                                                                9,'CNVS_BU_RRI')
-        IF (LBUDGET_RS) CALL BUDGET (                                          &
-                   UNPACK(ZRSS(:),MASK=GMICRO(:,:,:),FIELD=PRSS)*PRHODJ(:,:,:),&
-                                                               10,'CNVS_BU_RRS')
-        IF (LBUDGET_SV) CALL BUDGET (                                           &
-                   UNPACK(ZCIS(:),MASK=GMICRO(:,:,:),FIELD=PCIS)*PRHODJ(:,:,:), &
-                                                   12+NSV_LIMA_NI,'CNVS_BU_RSV')
-      END IF
+   IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
+      IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9,'CNVS_BU_RRI')
+      IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),10,'CNVS_BU_RRS')
+      IF (LBUDGET_SV) CALL BUDGET (PCIS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NI,'CNVS_BU_RSV')
+   END IF
 !
 !
 !*       2.4    Aggregation of r_i on r_s: CIAGGS and RIAGGS
 !        ---------------------------------------------------
 !
 !
+   IF( IMICRO >= 1 ) THEN
       WHERE ( (ZRIT(:)>XRTMIN(4)) .AND. (ZRST(:)>XRTMIN(5)) .AND. (ZRIS(:)>ZRTMIN(4)) &
                                                             .AND. (ZCIS(:)>ZCTMIN(4)) )
          ZZW1(:,3) = (ZLBDAI(:) / ZLBDAS(:))**3
@@ -448,19 +455,20 @@ IF( IMICRO >= 1 ) THEN
          ZRIS(:) = ZRIS(:) - ZZW1(:,2)
          ZRSS(:) = ZRSS(:) + ZZW1(:,2)
       END WHERE
-!
+      !
+      ZW(:,:,:) = PRIS(:,:,:)
+      PRIS(:,:,:) = UNPACK( ZRIS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
+      ZW(:,:,:) = PRSS(:,:,:)
+      PRSS(:,:,:) = UNPACK( ZRSS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
+      ZW(:,:,:) = PCIS(:,:,:)
+      PCIS(:,:,:) = UNPACK( ZCIS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
+   END IF
 ! Budget storage
-      IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
-        IF (LBUDGET_RI) CALL BUDGET (                                               &
-                       UNPACK(ZRIS(:),MASK=GMICRO(:,:,:),FIELD=PRIS)*PRHODJ(:,:,:), &
-                                                                9,'AGGS_BU_RRI')
-        IF (LBUDGET_RS) CALL BUDGET (                                               &
-                       UNPACK(ZRSS(:),MASK=GMICRO(:,:,:),FIELD=PRSS)*PRHODJ(:,:,:), &
-                                                               10,'AGGS_BU_RRS')
-        IF (LBUDGET_SV) CALL BUDGET (                                               &
-                       UNPACK(ZCIS(:),MASK=GMICRO(:,:,:),FIELD=PCIS)*PRHODJ(:,:,:), &
-                                                   12+NSV_LIMA_NI,'AGGS_BU_RSV')
-      END IF
+   IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
+      IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9,'AGGS_BU_RRI')
+      IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),10,'AGGS_BU_RRS')
+      IF (LBUDGET_SV) CALL BUDGET (PCIS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NI,'AGGS_BU_RSV')
+   END IF
 !
 !
 !------------------------------------------------------------------------------
@@ -469,90 +477,38 @@ IF( IMICRO >= 1 ) THEN
 !*       3.    Unpacking & Deallocating
 !              ------------------------
 !
-! 
+   IF( IMICRO >= 1 ) THEN
+      DEALLOCATE(ZRVT) 
+      DEALLOCATE(ZRCT) 
+      DEALLOCATE(ZRRT) 
+      DEALLOCATE(ZRIT) 
+      DEALLOCATE(ZRST) 
+      DEALLOCATE(ZRGT) 
+      DEALLOCATE(ZCIT) 
+      DEALLOCATE(ZRVS)  
+      DEALLOCATE(ZRIS)
+      DEALLOCATE(ZRSS)
+      DEALLOCATE(ZTHS)
+      DEALLOCATE(ZCIS)  
+      DEALLOCATE(ZRHODREF) 
+      DEALLOCATE(ZZT) 
+      DEALLOCATE(ZPRES) 
+      DEALLOCATE(ZEXNREF)
+      DEALLOCATE(ZZW)
+      DEALLOCATE(ZZX)
+      DEALLOCATE(ZLSFACT)
+      DEALLOCATE(ZSSI)
+      DEALLOCATE(ZLBDAI) 
+      DEALLOCATE(ZLBDAS)
+      DEALLOCATE(ZAI)
+      DEALLOCATE(ZCJ)
+      DEALLOCATE(ZKA)
+      DEALLOCATE(ZDV)
+      DEALLOCATE(ZZW1)
+      IF (NBUMOD==KMI .AND. LBU_ENABLE) DEALLOCATE(ZRHODJ)
+   END IF
 !
-  ZW(:,:,:) = PRVS(:,:,:)
-  PRVS(:,:,:) = UNPACK( ZRVS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
-  ZW(:,:,:) = PRIS(:,:,:)
-  PRIS(:,:,:) = UNPACK( ZRIS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
-  ZW(:,:,:) = PRSS(:,:,:)
-  PRSS(:,:,:) = UNPACK( ZRSS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
-!
-  ZW(:,:,:) = PCIS(:,:,:)
-  PCIS(:,:,:) = UNPACK( ZCIS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
-!
-  ZW(:,:,:) = PTHS(:,:,:)
-  PTHS(:,:,:) = UNPACK( ZTHS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
-!
-  DEALLOCATE(ZRVT) 
-  DEALLOCATE(ZRCT) 
-  DEALLOCATE(ZRRT) 
-  DEALLOCATE(ZRIT) 
-  DEALLOCATE(ZRST) 
-  DEALLOCATE(ZRGT) 
-  DEALLOCATE(ZCIT) 
-  DEALLOCATE(ZRVS)  
-  DEALLOCATE(ZRIS)
-  DEALLOCATE(ZRSS)
-  DEALLOCATE(ZTHS)
-  DEALLOCATE(ZCIS)  
-  DEALLOCATE(ZRHODREF) 
-  DEALLOCATE(ZZT) 
-  DEALLOCATE(ZPRES) 
-  DEALLOCATE(ZEXNREF)
-  DEALLOCATE(ZZW)
-  DEALLOCATE(ZZX)
-  DEALLOCATE(ZLSFACT)
-  DEALLOCATE(ZSSI)
-  DEALLOCATE(ZLBDAI) 
-  DEALLOCATE(ZLBDAS)
-  DEALLOCATE(ZAI)
-  DEALLOCATE(ZCJ)
-  DEALLOCATE(ZKA)
-  DEALLOCATE(ZDV)
-  DEALLOCATE(ZZW1)
-  IF (NBUMOD==KMI .AND. LBU_ENABLE) DEALLOCATE(ZRHODJ)
-!
-!
-ELSE
-!
-! Advance the budget calls
-!
-  IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
-    IF (LBUDGET_TH) THEN
-      ZW(:,:,:) = PTHS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,4,'DEPS_BU_RTH')
-    ENDIF
-    IF (LBUDGET_RV) THEN
-      ZW(:,:,:) = PRVS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,6,'DEPS_BU_RRV')
-    ENDIF
-    IF (LBUDGET_RI) THEN
-      ZW(:,:,:) = PRIS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,9,'CNVI_BU_RRI')
-      CALL BUDGET (ZW,9,'CNVS_BU_RRI')
-      CALL BUDGET (ZW,9,'AGGS_BU_RRI')
-    ENDIF
-    IF (LBUDGET_RS) THEN
-      ZW(:,:,:) = PRSS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,10,'CNVI_BU_RRS')
-      CALL BUDGET (ZW,10,'DEPS_BU_RRS')
-      CALL BUDGET (ZW,10,'CNVS_BU_RRS')
-      CALL BUDGET (ZW,10,'AGGS_BU_RRS')
-    ENDIF
-    IF (LBUDGET_SV) THEN
-      ZW(:,:,:) = PCIS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,12+NSV_LIMA_NI,'CNVI_BU_RSV')
-      CALL BUDGET (ZW,12+NSV_LIMA_NI,'CNVS_BU_RSV')
-      CALL BUDGET (ZW,12+NSV_LIMA_NI,'AGGS_BU_RSV')
-    ENDIF
-  ENDIF
-!
-END IF
-!
-!++cb++
-DEALLOCATE(ZRTMIN)
-DEALLOCATE(ZCTMIN)
-!--cb--
+   DEALLOCATE(ZRTMIN)
+   DEALLOCATE(ZCTMIN)
 !
-END SUBROUTINE LIMA_COLD_SLOW_PROCESSES
+ END SUBROUTINE LIMA_COLD_SLOW_PROCESSES
diff --git a/src/MNH/lima_meyers.f90 b/src/MNH/lima_meyers.f90
index 775a104ec5eb74d5d885a93f146f53c2deac0d91..39841aa20b7615886eea1b02ba8b982dbff1f5fb 100644
--- a/src/MNH/lima_meyers.f90
+++ b/src/MNH/lima_meyers.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2013-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2013-2020 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -106,8 +106,9 @@ END MODULE MODI_LIMA_MEYERS
 !!    -------------
 !!      Original             ??/??/13 
 !!      C. Barthe  * LACy *  jan. 2014   add budgets
-!!  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 28/05/2019: move COUNTJV function to tools.f90
+!  B. Vie         03/2020: correction of budgets parallelization
 !
 !-------------------------------------------------------------------------------
 !
@@ -336,26 +337,32 @@ IF( INEGT >= 1 ) THEN
   ZTHS(:) = ZTHS(:) + ZZW(:) * (ZLSFACT(:)-ZLVFACT(:)) ! f(L_s*(RVHNDI))
   ZCIS(:) = ZCIS(:) + ZZX(:)
 !
+!*            unpack variables
+!
+  ZW(:,:,:)   = PRVS(:,:,:)
+  PRVS(:,:,:) = UNPACK( ZRVS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
+  ZW(:,:,:)   = PRIS(:,:,:)
+  PRIS(:,:,:) = UNPACK( ZRIS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
+  ZW(:,:,:)   = PTHS(:,:,:)
+  PTHS(:,:,:) = UNPACK( ZTHS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
+  ZW(:,:,:)   = PCIS(:,:,:)
+  PCIS(:,:,:) = UNPACK( ZCIS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
+!
+END IF
 !
 ! Budget storage
-  IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
-    IF (LBUDGET_TH) CALL BUDGET (                                                 &
-                    UNPACK(ZTHS(:),MASK=GNEGT(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),&
-                                                                4,'HIND_BU_RTH')
-    IF (LBUDGET_RV) CALL BUDGET (                                                 &
-                    UNPACK(ZRVS(:),MASK=GNEGT(:,:,:),FIELD=PRVS)*PRHODJ(:,:,:),&
-                                                                6,'HIND_BU_RRV')
-    IF (LBUDGET_RI) CALL BUDGET (                                                 &
-                    UNPACK(ZRIS(:),MASK=GNEGT(:,:,:),FIELD=PRIS)*PRHODJ(:,:,:),&
-                                                                9,'HIND_BU_RRI')
-    IF (LBUDGET_SV) THEN
-      CALL BUDGET ( UNPACK(ZCIS(:),MASK=GNEGT(:,:,:),FIELD=PCIS)*PRHODJ(:,:,:),&
-                                                   12+NSV_LIMA_NI,'HIND_BU_RSV')
-    END IF
-  END IF
+IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
+   IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'HIND_BU_RTH')
+   IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),6,'HIND_BU_RRV')
+   IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9,'HIND_BU_RRI')
+   IF (LBUDGET_SV) THEN
+      CALL BUDGET (PCIS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NI,'HIND_BU_RSV')
+   END IF
+END IF
 !
 !*            compute the heterogeneous nucleation by contact: RVHNCI
 !
+IF( INEGT >= 1 ) THEN
   DO JL=1,INEGT
     ZINS(JL,1) = PINS(I1(JL),I2(JL),I3(JL),1)
   END DO
@@ -394,18 +401,6 @@ IF( INEGT >= 1 ) THEN
   PCCS(:,:,:) = UNPACK( ZCCS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
   ZW(:,:,:)   = PCIS(:,:,:)
   PCIS(:,:,:) = UNPACK( ZCIS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
-!
-! Budget storage
-  IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
-    IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:), 4,'HINC_BU_RTH')
-    IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:), 7,'HINC_BU_RRC')
-    IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:), 9,'HINC_BU_RRI')
-    IF (LBUDGET_SV) THEN
-      CALL BUDGET ( PCCS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NC,'HINC_BU_RSV')
-      CALL BUDGET ( PCIS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NI,'HINC_BU_RSV')
-    END IF
-  END IF
-
 !
   DEALLOCATE(ZRVT) 
   DEALLOCATE(ZRCT) 
@@ -438,43 +433,19 @@ IF( INEGT >= 1 ) THEN
   DEALLOCATE(ZLSFACT)
   DEALLOCATE(ZLVFACT)
 !
-ELSE
-!
-! Advance the budget calls
-!
-  IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
-    IF (LBUDGET_TH) THEN
-      ZW(:,:,:) = PTHS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,4,'HIND_BU_RTH')
-      CALL BUDGET (ZW,4,'HINC_BU_RTH')
-    ENDIF
-    IF (LBUDGET_RV) THEN
-      ZW(:,:,:) = PRVS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,6,'HIND_BU_RRV')
-    ENDIF
-    IF (LBUDGET_RC) THEN
-      ZW(:,:,:) = PRCS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,7,'HINC_BU_RRC')
-    ENDIF
-    IF (LBUDGET_RI) THEN
-      ZW(:,:,:) = PRIS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,9,'HIND_BU_RRI')
-      CALL BUDGET (ZW,9,'HINC_BU_RRI')
-    ENDIF
-    IF (LBUDGET_SV) THEN
-      ZW(:,:,:) = PCCS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,12+NSV_LIMA_NC,'HINC_BU_RSV')
-      ZW(:,:,:) = PCIS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,12+NSV_LIMA_NI,'HIND_BU_RSV')
-      CALL BUDGET (ZW,12+NSV_LIMA_NI,'HINC_BU_RSV')
-    END IF
-  END IF
+END IF
 !
+! Budget storage
+IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
+   IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:), 4,'HINC_BU_RTH')
+   IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:), 7,'HINC_BU_RRC')
+   IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:), 9,'HINC_BU_RRI')
+   IF (LBUDGET_SV) THEN
+      CALL BUDGET ( PCCS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NC,'HINC_BU_RSV')
+      CALL BUDGET ( PCIS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NI,'HINC_BU_RSV')
+   END IF
 END IF
-
-
-
-
+!
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/lima_mixed.f90 b/src/MNH/lima_mixed.f90
index 7525be5b3a195b44b6020d8f7d0320b66a0b089b..a858e7aaa07fc6bc2a673cb725c9785241b6199b 100644
--- a/src/MNH/lima_mixed.f90
+++ b/src/MNH/lima_mixed.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2013-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2013-2020 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -15,7 +15,9 @@ INTERFACE
                              PTHT, PRT, PSVT,                     &
                              PTHS, PRS, PSVS)
 !
-LOGICAL,                  INTENT(IN)    :: OSEDI   ! switch to activate the 
+USE MODD_NSV,   only: NSV_LIMA_BEG
+!
+LOGICAL,                  INTENT(IN)    :: OSEDI   ! switch to activate the
                                                    ! cloud ice sedimentation
 LOGICAL,                  INTENT(IN)    :: OHHONI  ! enable haze freezing
 INTEGER,                  INTENT(IN)    :: KSPLITG ! Number of small time step 
@@ -38,12 +40,11 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABSM  ! abs. pressure at time t-dt
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT    ! Theta at time t
 REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT     ! m.r. at t 
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVT    ! Concentrations at t 
-
+REAL, DIMENSION(:,:,:,NSV_LIMA_BEG:), INTENT(IN)    :: PSVT ! Concentrations at time t
 !
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PTHS    ! Theta source
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRS     ! m.r. source
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVS    ! Concentrations source
+REAL, DIMENSION(:,:,:,NSV_LIMA_BEG:), INTENT(INOUT) :: PSVS ! Concentration sources
 !
 END SUBROUTINE LIMA_MIXED
 END INTERFACE
@@ -91,8 +92,9 @@ END MODULE MODI_LIMA_MIXED
 !!    -------------
 !!      Original             ??/??/13 
 !!      C. Barthe  * LACy *  jan. 2014   add budgets
-!!  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
+!  B. Vie         03/2020: correction of budgets parallelization
+!  P. Wautelet 28/05/2020: bugfix: correct array start for PSVT and PSVS
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -143,12 +145,11 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABSM  ! abs. pressure at time t-dt
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT    ! Theta at time t
 REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT     ! m.r. at t 
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVT    ! Concentrations at t 
-
+REAL, DIMENSION(:,:,:,NSV_LIMA_BEG:), INTENT(IN)    :: PSVT ! Concentrations at time t
 !
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PTHS    ! Theta source
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRS     ! m.r. source
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVS    ! Concentrations source
+REAL, DIMENSION(:,:,:,NSV_LIMA_BEG:), INTENT(INOUT) :: PSVS ! Concentration sources
 !
 !*       0.2   Declarations of local variables :
 !
@@ -378,7 +379,7 @@ GMICRO(IIB:IIE,IJB:IJE,IKB:IKE) = PRCT(IIB:IIE,IJB:IJE,IKB:IKE)>XRTMIN(2) .OR. &
 !
 IMICRO = COUNTJV( GMICRO(:,:,:),I1(:),I2(:),I3(:))
 !
-IF( IMICRO >= 1 ) THEN
+IF( IMICRO >= 0 ) THEN
 !
    ALLOCATE(ZRVT(IMICRO)) 
    ALLOCATE(ZRCT(IMICRO))
diff --git a/src/MNH/lima_nucleation_procs.f90 b/src/MNH/lima_nucleation_procs.f90
index 2588a5e56621231849adf05c168517b7a52cb714..9526dafa32b87f94faac15464a80f24cbfc0ea98 100644
--- a/src/MNH/lima_nucleation_procs.f90
+++ b/src/MNH/lima_nucleation_procs.f90
@@ -69,6 +69,7 @@ SUBROUTINE LIMA_NUCLEATION_PROCS (PTSTEP, TPFILE, OCLOSE_OUT, PRHODJ,
 !!    MODIFICATIONS
 !!    -------------
 !!      Original             15/03/2018
+!!      M. Leriche (06/19) : missing update of PNFT after CCN hom. ncl.
 ! P. Wautelet 27/02/2020: bugfix: PNFT was not updated after LIMA_CCN_HOM_FREEZING
 ! P. Wautelet 27/02/2020: add Z_TH_HINC variable (for budgets)
 ! B. Vie      03/03/2020: use DTHRAD instead of dT/dt in Smax diagnostic computation
@@ -290,7 +291,9 @@ PTHT(:,:,:) = ZTHT(:,:,:)
 PRVT(:,:,:) = ZRVT(:,:,:)
 PRIT(:,:,:) = ZRIT(:,:,:)
 PCIT(:,:,:) = ZCIT(:,:,:)
-PNFT(:,:,:,:) = ZNFT(:,:,:,:)
+DO JL=1, NMOD_CCN
+  PNFT(:,:,:,JL) = ZNFT(:,:,:,JL)
+ENDDO
 PNHT(:,:,:) = ZNHT(:,:,:)
 ENDIF
 !
diff --git a/src/MNH/lima_phillips.f90 b/src/MNH/lima_phillips.f90
index 03af388b71ef40b0ad5e71b8ddea351a304c1483..649e71a18f27fd059555d784b2742682ac6eab7e 100644
--- a/src/MNH/lima_phillips.f90
+++ b/src/MNH/lima_phillips.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2013-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2013-2020 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -115,8 +115,9 @@ END MODULE MODI_LIMA_PHILLIPS
 !!    -------------
 !!      Original             ??/??/13 
 !!      C. Barthe  * LACy *  jan. 2014   add budgets
-!!  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 28/05/2019: move COUNTJV function to tools.f90
+!  B. Vie         03/2020: Correction of budgets parallelization
 !
 !-------------------------------------------------------------------------------
 !
@@ -465,27 +466,29 @@ DO JMOD_IFN = 1,NMOD_IFN    ! IFN modes
    ZCIS(:) = ZCIS(:) + ZZX(:)
 END DO
 !
+ZW(:,:,:)   = PRVS(:,:,:)
+PRVS(:,:,:) = UNPACK( ZRVS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
+ZW(:,:,:)   = PRIS(:,:,:)
+PRIS(:,:,:) = UNPACK( ZRIS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
+ZW(:,:,:)   = PTHS(:,:,:)
+PTHS(:,:,:) = UNPACK( ZTHS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
+ZW(:,:,:)   = PCIS(:,:,:)
+PCIS(:,:,:) = UNPACK( ZCIS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
+END IF ! INEGT - call budget out of INEGT test
 !
 ! Budget storage
 IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
-  IF (LBUDGET_TH) CALL BUDGET (                                              &
-                  UNPACK(ZTHS(:),MASK=GNEGT(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),&
-                                                              4,'HIND_BU_RTH')
-  IF (LBUDGET_RV) CALL BUDGET (                                              &
-                  UNPACK(ZRVS(:),MASK=GNEGT(:,:,:),FIELD=PRVS)*PRHODJ(:,:,:),&
-                                                              6,'HIND_BU_RRV')
-  IF (LBUDGET_RI) CALL BUDGET (                                              &
-                  UNPACK(ZRIS(:),MASK=GNEGT(:,:,:),FIELD=PRIS)*PRHODJ(:,:,:),&
-                                                              9,'HIND_BU_RRI')
-  IF (LBUDGET_SV) THEN
-    CALL BUDGET ( UNPACK(ZCIS(:),MASK=GNEGT(:,:,:),FIELD=PCIS)*PRHODJ(:,:,:),&
-                                                       12+NSV_LIMA_NI,'HIND_BU_RSV')
-    IF (NMOD_IFN.GE.1) THEN
-       DO JL=1, NMOD_IFN
-          CALL BUDGET ( PIFS(:,:,:,JL)*PRHODJ(:,:,:),12+NSV_LIMA_IFN_FREE+JL-1,'HIND_BU_RSV') 
-       END DO
-    END IF
-  END IF
+   IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'HIND_BU_RTH')
+   IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),6,'HIND_BU_RRV')
+   IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9,'HIND_BU_RRI')
+   IF (LBUDGET_SV) THEN
+      CALL BUDGET (PCIS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NI,'HIND_BU_RSV')
+      IF (NMOD_IFN.GE.1) THEN
+         DO JL=1, NMOD_IFN
+            CALL BUDGET (PIFS(:,:,:,JL)*PRHODJ(:,:,:),12+NSV_LIMA_IFN_FREE+JL-1,'HIND_BU_RSV') 
+         END DO
+      END IF
+   END IF
 END IF
 !
 !
@@ -500,58 +503,63 @@ END IF
 ! Currently, we represent coated IFN as a pure aerosol type (NIND_SPECIE)
 !
 !
-DO JMOD_IMM = 1,NMOD_IMM  ! Coated IFN modes
-   JMOD_CCN = NINDICE_CCN_IMM(JMOD_IMM) ! Corresponding CCN mode
-   IF (JMOD_CCN .GT. 0) THEN
-!
-! OLD LIMA : Compute the appropriate mean diameter and sigma      
-!      XMDIAM_IMM = MIN( XMDIAM_IFN(NIND_SPECIE) , XR_MEAN_CCN(JMOD_CCN)*2. )
-!      XSIGMA_IMM = MIN( XSIGMA_IFN(JSPECIE) , EXP(XLOGSIG_CCN(JMOD_CCN)) )
-!
-      ZZW(:) = MIN( ZCCS(:) , ZNAS(:,JMOD_CCN) )
-      ZZX(:)=  ( ZZW(:)+ZNIS(:,JMOD_IMM) ) * Z_FRAC_ACT(:,NIND_SPECIE)
-! Now : ZZX(:) = number of activable AP.
-! Activated AP at this time step = activable AP - already activated AP 
-      ZZX(:) = MIN( ZZW(:), MAX( (ZZX(:)-ZNIS(:,JMOD_IMM)),0.0 ) )
-! Correction BVIE division by PTSTEP ?
-!      ZZY(:) = MIN( XMNU0*ZZX(:) / PTSTEP , ZRVS(:)     )
-      ZZY(:) = MIN( XMNU0*ZZX(:) , ZRVS(:)     )
-!
-! Update the concentrations and MMR
-!   
-      ZNAS(:,JMOD_CCN)     = ZNAS(:,JMOD_CCN) - ZZX(:)
-      ZW(:,:,:)            = PNAS(:,:,:,JMOD_CCN)
-      PNAS(:,:,:,JMOD_CCN) = UNPACK(ZNAS(:,JMOD_CCN),MASK=GNEGT(:,:,:), &
-                                                     FIELD=ZW(:,:,:))
-      ZNIS(:,JMOD_IMM)     = ZNIS(:,JMOD_IMM) + ZZX(:)
-      ZW(:,:,:)            = PNIS(:,:,:,JMOD_IMM)
-      PNIS(:,:,:,JMOD_IMM) = UNPACK(ZNIS(:,JMOD_IMM),MASK=GNEGT(:,:,:), &
-                                                     FIELD=ZW(:,:,:))
-!
-      ZRCS(:) = ZRCS(:) - ZZY(:)
-      ZRIS(:) = ZRIS(:) + ZZY(:)
-      ZTHS(:) = ZTHS(:) + ZZY(:)*ZLSFACT(:) !-ZLVFACT(:)) ! f(L_s*(RVHNCI))
-      ZCCS(:) = ZCCS(:) - ZZX(:)
-      ZCIS(:) = ZCIS(:) + ZZX(:)
-   END IF
-END DO
+IF (INEGT > 0) THEN
+   DO JMOD_IMM = 1,NMOD_IMM  ! Coated IFN modes
+      JMOD_CCN = NINDICE_CCN_IMM(JMOD_IMM) ! Corresponding CCN mode
+      IF (JMOD_CCN .GT. 0) THEN
+         !
+         ! OLD LIMA : Compute the appropriate mean diameter and sigma      
+         !      XMDIAM_IMM = MIN( XMDIAM_IFN(NIND_SPECIE) , XR_MEAN_CCN(JMOD_CCN)*2. )
+         !      XSIGMA_IMM = MIN( XSIGMA_IFN(JSPECIE) , EXP(XLOGSIG_CCN(JMOD_CCN)) )
+         !
+         ZZW(:) = MIN( ZCCS(:) , ZNAS(:,JMOD_CCN) )
+         ZZX(:)=  ( ZZW(:)+ZNIS(:,JMOD_IMM) ) * Z_FRAC_ACT(:,NIND_SPECIE)
+         ! Now : ZZX(:) = number of activable AP.
+         ! Activated AP at this time step = activable AP - already activated AP 
+         ZZX(:) = MIN( ZZW(:), MAX( (ZZX(:)-ZNIS(:,JMOD_IMM)),0.0 ) )
+         ! Correction BVIE division by PTSTEP ?
+         !      ZZY(:) = MIN( XMNU0*ZZX(:) / PTSTEP , ZRVS(:)     )
+         ZZY(:) = MIN( XMNU0*ZZX(:) , ZRVS(:)     )
+         !
+         ! Update the concentrations and MMR
+         !   
+         ZNAS(:,JMOD_CCN)     = ZNAS(:,JMOD_CCN) - ZZX(:)
+         ZW(:,:,:)            = PNAS(:,:,:,JMOD_CCN)
+         PNAS(:,:,:,JMOD_CCN) = UNPACK(ZNAS(:,JMOD_CCN),MASK=GNEGT(:,:,:), &
+              FIELD=ZW(:,:,:))
+         ZNIS(:,JMOD_IMM)     = ZNIS(:,JMOD_IMM) + ZZX(:)
+         ZW(:,:,:)            = PNIS(:,:,:,JMOD_IMM)
+         PNIS(:,:,:,JMOD_IMM) = UNPACK(ZNIS(:,JMOD_IMM),MASK=GNEGT(:,:,:), &
+              FIELD=ZW(:,:,:))
+         !
+         ZRCS(:) = ZRCS(:) - ZZY(:)
+         ZRIS(:) = ZRIS(:) + ZZY(:)
+         ZTHS(:) = ZTHS(:) + ZZY(:)*ZLSFACT(:) !-ZLVFACT(:)) ! f(L_s*(RVHNCI))
+         ZCCS(:) = ZCCS(:) - ZZX(:)
+         ZCIS(:) = ZCIS(:) + ZZX(:)
+      END IF
+   END DO
+   !
+   ZW(:,:,:)   = PRCS(:,:,:)
+   PRCS(:,:,:) = UNPACK( ZRCS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
+   ZW(:,:,:)   = PRIS(:,:,:)
+   PRIS(:,:,:) = UNPACK( ZRIS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
+   ZW(:,:,:)   = PTHS(:,:,:)
+   PTHS(:,:,:) = UNPACK( ZTHS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
+   ZW(:,:,:)   = PCCS(:,:,:)
+   PCCS(:,:,:) = UNPACK( ZCCS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
+   ZW(:,:,:)   = PCIS(:,:,:)
+   PCIS(:,:,:) = UNPACK( ZCIS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
+END IF ! INEGT
 !
 ! Budget storage
 IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
-  IF (LBUDGET_TH) CALL BUDGET (                                                 &
-                  UNPACK(ZTHS(:),MASK=GNEGT(:,:,:),FIELD=PTHS)*PRHODJ(:,:,:),&
-                                                              4,'HINC_BU_RTH')
-  IF (LBUDGET_RC) CALL BUDGET (                                                 &
-                  UNPACK(ZRCS(:),MASK=GNEGT(:,:,:),FIELD=PRCS)*PRHODJ(:,:,:),&
-                                                              7,'HINC_BU_RRC')
-  IF (LBUDGET_RI) CALL BUDGET (                                                 &
-                  UNPACK(ZRIS(:),MASK=GNEGT(:,:,:),FIELD=PRIS)*PRHODJ(:,:,:),&
-                                                              9,'HINC_BU_RRI')
+  IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'HINC_BU_RTH')
+  IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7,'HINC_BU_RRC')
+  IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9,'HINC_BU_RRI')
   IF (LBUDGET_SV) THEN
-    CALL BUDGET ( UNPACK(ZCCS(:),MASK=GNEGT(:,:,:),FIELD=PCCS)*PRHODJ(:,:,:),&
-                                                       12+NSV_LIMA_NC,'HINC_BU_RSV')
-    CALL BUDGET ( UNPACK(ZCIS(:),MASK=GNEGT(:,:,:),FIELD=PCIS)*PRHODJ(:,:,:),&
-                                                       12+NSV_LIMA_NI,'HINC_BU_RSV')
+    CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NC,'HINC_BU_RSV')
+    CALL BUDGET (PCIS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NI,'HINC_BU_RSV')
   END IF
 END IF
 !
@@ -563,102 +571,43 @@ END IF
 !	        --------------------------
 !
 !
-! End of the heterogeneous nucleation following Phillips 08
-! Unpack variables, deallocate...
-!
-!
-ZW(:,:,:)   = PRVS(:,:,:)
-PRVS(:,:,:) = UNPACK( ZRVS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
-ZW(:,:,:)   = PRCS(:,:,:)
-PRCS(:,:,:) = UNPACK( ZRCS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
-ZW(:,:,:)   = PRIS(:,:,:)
-PRIS(:,:,:) = UNPACK( ZRIS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
-ZW(:,:,:)   = PTHS(:,:,:)
-PTHS(:,:,:) = UNPACK( ZTHS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
-ZW(:,:,:)   = PCCS(:,:,:)
-PCCS(:,:,:) = UNPACK( ZCCS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
-ZW(:,:,:)   = PCIS(:,:,:)
-PCIS(:,:,:) = UNPACK( ZCIS(:),MASK=GNEGT(:,:,:),FIELD=ZW(:,:,:) )
-!
-DEALLOCATE(ZRTMIN)
-DEALLOCATE(ZCTMIN)
-DEALLOCATE(ZRVT) 
-DEALLOCATE(ZRCT) 
-DEALLOCATE(ZRRT) 
-DEALLOCATE(ZRIT) 
-DEALLOCATE(ZRST) 
-DEALLOCATE(ZRGT) 
-DEALLOCATE(ZCIT)
-DEALLOCATE(ZRVS) 
-DEALLOCATE(ZRCS)
-DEALLOCATE(ZRIS)
-DEALLOCATE(ZTHS)
-DEALLOCATE(ZCCS)
-DEALLOCATE(ZCIS)
-DEALLOCATE(ZNAS)
-DEALLOCATE(ZIFS)
-DEALLOCATE(ZINS)
-DEALLOCATE(ZNIS)
-DEALLOCATE(ZRHODREF) 
-DEALLOCATE(ZZT) 
-DEALLOCATE(ZPRES) 
-DEALLOCATE(ZEXNREF)
-DEALLOCATE(ZLSFACT)
-DEALLOCATE(ZLVFACT)
-DEALLOCATE(ZSI)
-DEALLOCATE(ZTCELSIUS)
-DEALLOCATE(ZZT_SI0_BC)
-DEALLOCATE(ZLBDAC)
-DEALLOCATE(ZSI0)
-DEALLOCATE(Z_FRAC_ACT)
-DEALLOCATE(ZSW)
-DEALLOCATE(ZZW)
-DEALLOCATE(ZZX)
-DEALLOCATE(ZZY)
-!++cb++
-  DEALLOCATE(ZSI_W)
-!--cb--
-!
-!
-ELSE
-!
-! Advance the budget calls
-!
-  IF (NBUMOD==KMI .AND. LBU_ENABLE) THEN
-    IF (LBUDGET_TH) THEN
-      ZW(:,:,:) = PTHS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,4,'HIND_BU_RTH')
-      CALL BUDGET (ZW,4,'HINC_BU_RTH')
-    ENDIF
-    IF (LBUDGET_RV) THEN
-      ZW(:,:,:) = PRVS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,6,'HIND_BU_RRV')
-    ENDIF
-    IF (LBUDGET_RC) THEN
-      ZW(:,:,:) = PRCS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,7,'HINC_BU_RRC')
-    ENDIF
-    IF (LBUDGET_RI) THEN
-      ZW(:,:,:) = PRIS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,9,'HIND_BU_RRI')
-      CALL BUDGET (ZW,9,'HINC_BU_RRI')
-    ENDIF
-    IF (LBUDGET_SV) THEN
-!print*, 'LBUDGET_SV dans lima_phillips = ', LBUDGET_SV
-      ZW(:,:,:) = PCCS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,12+NSV_LIMA_NC,'HINC_BU_RSV')
-      ZW(:,:,:) = PCIS(:,:,:)*PRHODJ(:,:,:)
-      CALL BUDGET (ZW,12+NSV_LIMA_NI,'HIND_BU_RSV')
-      CALL BUDGET (ZW,12+NSV_LIMA_NI,'HINC_BU_RSV')
-      IF (NMOD_IFN.GE.1) THEN
-         DO JL=1, NMOD_IFN
-            CALL BUDGET ( PIFS(:,:,:,JL)*PRHODJ(:,:,:),12+NSV_LIMA_IFN_FREE+JL-1,'HIND_BU_RSV') 
-         END DO
-      END IF
-    END IF
-  END IF
-!
-!
+IF (INEGT > 0) THEN
+   DEALLOCATE(ZRTMIN)
+   DEALLOCATE(ZCTMIN)
+   DEALLOCATE(ZRVT) 
+   DEALLOCATE(ZRCT) 
+   DEALLOCATE(ZRRT) 
+   DEALLOCATE(ZRIT) 
+   DEALLOCATE(ZRST) 
+   DEALLOCATE(ZRGT) 
+   DEALLOCATE(ZCIT)
+   DEALLOCATE(ZRVS) 
+   DEALLOCATE(ZRCS)
+   DEALLOCATE(ZRIS)
+   DEALLOCATE(ZTHS)
+   DEALLOCATE(ZCCS)
+   DEALLOCATE(ZCIS)
+   DEALLOCATE(ZNAS)
+   DEALLOCATE(ZIFS)
+   DEALLOCATE(ZINS)
+   DEALLOCATE(ZNIS)
+   DEALLOCATE(ZRHODREF) 
+   DEALLOCATE(ZZT) 
+   DEALLOCATE(ZPRES) 
+   DEALLOCATE(ZEXNREF)
+   DEALLOCATE(ZLSFACT)
+   DEALLOCATE(ZLVFACT)
+   DEALLOCATE(ZSI)
+   DEALLOCATE(ZTCELSIUS)
+   DEALLOCATE(ZZT_SI0_BC)
+   DEALLOCATE(ZLBDAC)
+   DEALLOCATE(ZSI0)
+   DEALLOCATE(Z_FRAC_ACT)
+   DEALLOCATE(ZSW)
+   DEALLOCATE(ZZW)
+   DEALLOCATE(ZZX)
+   DEALLOCATE(ZZY)
+   DEALLOCATE(ZSI_W)
 END IF ! INEGT > 0
 !
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/lima_precip_scavenging.f90 b/src/MNH/lima_precip_scavenging.f90
index 351ee92f0222640114445e455096dcd65234ae2b..8bfee8c9503fbab61b18ee490fae67a04ced5997 100644
--- a/src/MNH/lima_precip_scavenging.f90
+++ b/src/MNH/lima_precip_scavenging.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2013-2020 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -11,7 +11,9 @@ INTERFACE
    SUBROUTINE LIMA_PRECIP_SCAVENGING (HCLOUD, KLUOUT, KTCOUNT, PTSTEP,        &
                                       PRRT, PRHODREF, PRHODJ, PZZ,            & 
                                       PPABST, PTHT, PSVT, PRSVS, PINPAP )
-!
+
+use modd_nsv, only: nsv_lima_beg
+
 CHARACTER(LEN=4),       INTENT(IN)    :: HCLOUD   ! cloud paramerization
 INTEGER,                INTENT(IN)    :: KLUOUT   ! unit for output listing
 INTEGER,                INTENT(IN)    :: KTCOUNT  ! iteration count
@@ -25,8 +27,8 @@ REAL, DIMENSION(:,:,:), INTENT(IN)    :: PZZ      ! Altitude
 REAL, DIMENSION(:,:,:), INTENT(IN)    :: PPABST   ! Absolute pressure at t
 REAL, DIMENSION(:,:,:), INTENT(IN)    :: PTHT     ! Theta at time t 
 !
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVT   ! Particle Concentration [kg-1]
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRSVS  ! Total Number Scavenging Rate
+REAL, DIMENSION(:,:,:,NSV_LIMA_BEG:), INTENT(IN)    :: PSVT   ! Particle Concentration [kg-1]
+REAL, DIMENSION(:,:,:,NSV_LIMA_BEG:), INTENT(INOUT) :: PRSVS  ! Total Number Scavenging Rate
 !
 REAL, DIMENSION(:,:),   INTENT(INOUT) :: PINPAP
 !
@@ -95,9 +97,10 @@ END MODULE MODI_LIMA_PRECIP_SCAVENGING
 !!    -------------
 !!      Original             ??/??/13 
 !!
-!!  Philippe Wautelet 28/05/2018: corrected truncated integer division (3/2 -> 1.5)
+!  P. Wautelet 28/05/2018: corrected truncated integer division (3/2 -> 1.5)
 !  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !  P. Wautelet 28/05/2019: move COUNTJV function to tools.f90
+!  P. Wautelet 03/06/2020: bugfix: correct array starts for PSVT and PRSVS
 !-------------------------------------------------------------------------------
 !
 !*                  0.DECLARATIONS          
@@ -140,8 +143,8 @@ REAL, DIMENSION(:,:,:), INTENT(IN)    :: PZZ      ! Altitude
 REAL, DIMENSION(:,:,:), INTENT(IN)    :: PPABST   ! Absolute pressure at t
 REAL, DIMENSION(:,:,:), INTENT(IN)    :: PTHT     ! Theta at time t 
 !
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVT   ! Particle Concentration [/m**3]
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRSVS  ! Total Number Scavenging Rate
+REAL, DIMENSION(:,:,:,NSV_LIMA_BEG:), INTENT(IN)    :: PSVT   ! Particle Concentration [/m**3]
+REAL, DIMENSION(:,:,:,NSV_LIMA_BEG:), INTENT(INOUT) :: PRSVS  ! Total Number Scavenging Rate
 !
 REAL, DIMENSION(:,:),   INTENT(INOUT) :: PINPAP
 !
diff --git a/src/MNH/lima_warm.f90 b/src/MNH/lima_warm.f90
index d982cbe4fdc52b4c6d2de105836a2ad6fcf66937..fc47a31148a1f02ce7611ad5661f1b5a1f345b2d 100644
--- a/src/MNH/lima_warm.f90
+++ b/src/MNH/lima_warm.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2013-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2013-2020 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -17,6 +17,7 @@ INTERFACE
                             PINPRC, PINPRR, PINDEP, PINPRR3D, PEVAP3D     )
 !
 USE MODD_IO,   ONLY: TFILEDATA
+USE MODD_NSV, only: NSV_LIMA_BEG
 !
 LOGICAL,                  INTENT(IN)    :: OACTIT     ! Switch to activate the
                                                       ! activation by radiative
@@ -51,11 +52,11 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRCM       ! Cloud water m.r. at t-dt
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT       ! Theta at time t
 REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT        ! m.r. at t 
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVT       ! Concentrations at t 
+REAL, DIMENSION(:,:,:,NSV_LIMA_BEG:), INTENT(IN)    :: PSVT ! Concentrations at time t
 !
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PTHS       ! Theta source
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRS        ! m.r. source
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVS       ! Concentrations source
+REAL, DIMENSION(:,:,:,NSV_LIMA_BEG:), INTENT(INOUT) :: PSVS ! Concentration sources
 !
 !
 !
@@ -126,9 +127,10 @@ END MODULE MODI_LIMA_WARM
 !!      Original             ??/??/13 
 !!      C. Barthe  * LACy *  jan. 2014   add budgets
 !!      J. Escobar : for real*4 , use XMNH_HUGE
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!!  B.Vié 03/02/2020 : correction of activation of water deposition on the ground
-!!  B.Vié 03/03/2020 : use DTHRAD instead of dT/dt in Smax diagnostic computation
+!  P. Wautelet 05/2016-04/2018: new data structures and calls for I/O
+!  B. Vié      03/02/2020: correction of activation of water deposition on the ground
+!  B. Vié      03/03/2020: use DTHRAD instead of dT/dt in Smax diagnostic computation
+!  P. Wautelet 28/05/2020: bugfix: correct array start for PSVT and PSVS
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -189,11 +191,11 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRCM       ! Cloud water m.r. at t-dt
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT       ! Theta at time t
 REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT        ! m.r. at t 
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVT       ! Concentrations at t 
+REAL, DIMENSION(:,:,:,NSV_LIMA_BEG:), INTENT(IN)    :: PSVT ! Concentrations at time t
 !
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PTHS       ! Theta source
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRS        ! m.r. source
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVS       ! Concentrations source
+REAL, DIMENSION(:,:,:,NSV_LIMA_BEG:), INTENT(INOUT) :: PSVS ! Concentration sources
 !
 !
 !
diff --git a/src/MNH/lima_warm_coal.f90 b/src/MNH/lima_warm_coal.f90
index aaae2a04be021958b9d559584d07004c012c40ea..0986129261f97bd8bc2fe9f507d5cb2542478145 100644
--- a/src/MNH/lima_warm_coal.f90
+++ b/src/MNH/lima_warm_coal.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2013-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2013-2020 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -95,8 +95,9 @@ END MODULE MODI_LIMA_WARM_COAL
 !!    -------------
 !!      Original             ??/??/13 
 !!      C. Barthe  * LACy *  jan. 2014   add budgets
-!!  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 28/05/2019: move COUNTJV function to tools.f90
+!  B. Vie         03/2020: correction of budgets parallelization
 !
 !-------------------------------------------------------------------------------
 !
@@ -239,6 +240,7 @@ IF( IMICRO >= 1 ) THEN
    ALLOCATE(ZZW1(IMICRO))
    ALLOCATE(ZZW2(IMICRO))
    ALLOCATE(ZZW3(IMICRO))
+END IF ! IMICRO
 !
 !
 !-------------------------------------------------------------------------------
@@ -249,20 +251,21 @@ IF (LRAIN) THEN
 !   	 ------------------------------------
 !
 !
-   GSELF(:) = ZCCT(:)>XCTMIN(2)
-   ISELF = COUNT(GSELF(:))
-   IF( ISELF>0 ) THEN
-      ZZW1(:) = XSELFC*(ZCCT(:)/ZLBDC3(:))**2 * ZRHODREF(:) ! analytical integration
-      WHERE( GSELF(:) )
-         ZCCS(:) = ZCCS(:) - MIN( ZCCS(:),ZZW1(:) )
-      END WHERE
+   IF( IMICRO >= 1 ) THEN
+      GSELF(:) = ZCCT(:)>XCTMIN(2)
+      ISELF = COUNT(GSELF(:))
+      IF( ISELF>0 ) THEN
+         ZZW1(:) = XSELFC*(ZCCT(:)/ZLBDC3(:))**2 * ZRHODREF(:) ! analytical integration
+         WHERE( GSELF(:) )
+            ZCCS(:) = ZCCS(:) - MIN( ZCCS(:),ZZW1(:) )
+         END WHERE
+      END IF
+      !
+      ZW(:,:,:) = PCCS(:,:,:)
+      PCCS(:,:,:) = UNPACK( ZCCS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
    END IF
-!
-!
-  ZW(:,:,:) = PCCS(:,:,:)
-  IF (LBUDGET_SV) CALL BUDGET (                                 &
-                   UNPACK(ZCCS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:))&
-                   &*PRHODJ(:,:,:),12+NSV_LIMA_NC,'SELF_BU_RSV') 
+   !
+   IF (LBUDGET_SV) CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NC,'SELF_BU_RSV') 
 !
 !
 !-------------------------------------------------------------------------------
@@ -273,44 +276,42 @@ IF (LRAIN) THEN
 !
 !
 !
-   ZZW2(:) = 0.0
-   ZZW1(:) = 0.0
-   WHERE( ZRCT(:)>XRTMIN(2) )
-      ZZW2(:) = MAX( 0.0,XLAUTR*ZRHODREF(:)*ZRCT(:)*             &
-                           (XAUTO1/min(ZLBDC(:),1.e9)**4-XLAUTR_THRESHOLD) ) ! L 
-!
-      ZZW3(:) = MIN( ZRCS(:), MAX( 0.0,XITAUTR*ZZW2(:)*ZRCT(:)*  &
-                           (XAUTO2/ZLBDC(:)-XITAUTR_THRESHOLD) ) ) ! L/tau
-!
-      ZRCS(:) = ZRCS(:) - ZZW3(:)
-      ZRRS(:) = ZRRS(:) + ZZW3(:)
-!
-      ZZW1(:) = MIN( MIN( 1.2E4,(XACCR4/ZLBDC(:)-XACCR5)/XACCR3),   &
-                           ZLBDR(:)/XACCR1 ) ! D**-1 threshold diameter for 
-                                             ! switching the autoconversion regimes
-                                             ! min (80 microns, D_h, D_r)
-      ZZW3(:) = ZZW3(:) * MAX( 0.0,ZZW1(:) )**3 / XAC 
-      ZCRS(:) = ZCRS(:) + ZZW3(:)
-   END WHERE
-!
-!
-   ZW(:,:,:) = PRCS(:,:,:)
-   IF (LBUDGET_RC) CALL BUDGET (                                  &
-               UNPACK(ZRCS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:)) &
-                            *PRHODJ(:,:,:),7 ,'AUTO_BU_RRC')
-
-   ZW(:,:,:) = PRRS(:,:,:)
-   IF (LBUDGET_RR) CALL BUDGET (                                  &
-               UNPACK(ZRRS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:)) &
-                            *PRHODJ(:,:,:),8 ,'AUTO_BU_RRR')
-   ZW(:,:,:) = PCRS(:,:,:)
-   IF (LBUDGET_SV) THEN
-      ZW(:,:,:) = PCRS(:,:,:)
-      CALL BUDGET (UNPACK(ZCRS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:)) &
-               *PRHODJ(:,:,:),12+NSV_LIMA_NR,'AUTO_BU_RSV')
+   IF( IMICRO >= 1 ) THEN
+      ZZW2(:) = 0.0
+      ZZW1(:) = 0.0
+      WHERE( ZRCT(:)>XRTMIN(2) )
+         ZZW2(:) = MAX( 0.0,XLAUTR*ZRHODREF(:)*ZRCT(:)*             &
+              (XAUTO1/min(ZLBDC(:),1.e9)**4-XLAUTR_THRESHOLD) ) ! L 
+         !
+         ZZW3(:) = MIN( ZRCS(:), MAX( 0.0,XITAUTR*ZZW2(:)*ZRCT(:)*  &
+              (XAUTO2/ZLBDC(:)-XITAUTR_THRESHOLD) ) ) ! L/tau
+         !
+         ZRCS(:) = ZRCS(:) - ZZW3(:)
+         ZRRS(:) = ZRRS(:) + ZZW3(:)
+         !
+         ZZW1(:) = MIN( MIN( 1.2E4,(XACCR4/ZLBDC(:)-XACCR5)/XACCR3),   &
+              ZLBDR(:)/XACCR1 ) ! D**-1 threshold diameter for 
+         ! switching the autoconversion regimes
+         ! min (80 microns, D_h, D_r)
+         ZZW3(:) = ZZW3(:) * MAX( 0.0,ZZW1(:) )**3 / XAC 
+         ZCRS(:) = ZCRS(:) + ZZW3(:)
+      END WHERE
+      !
+      ZW(:,:,:) = PRCS(:,:,:)
+      PRCS(:,:,:) = UNPACK( ZRCS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
+      ZW(:,:,:) = PRRS(:,:,:)
+      PRRS(:,:,:) = UNPACK( ZRRS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
       ZW(:,:,:) = PCCS(:,:,:)
-      CALL BUDGET (UNPACK(ZCCS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:)) &
-               *PRHODJ(:,:,:),12+NSV_LIMA_NC,'AUTO_BU_RSV')
+      PCCS(:,:,:) = UNPACK( ZCCS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
+      ZW(:,:,:) = PCRS(:,:,:)
+      PCRS(:,:,:) = UNPACK( ZCRS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
+   END IF
+   !
+   IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7 ,'AUTO_BU_RRC')
+   IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8 ,'AUTO_BU_RRR')
+   IF (LBUDGET_SV) THEN
+      CALL BUDGET (PCRS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NR,'AUTO_BU_RSV')
+      CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NC,'AUTO_BU_RSV')
    END IF
 !
 !
@@ -321,58 +322,57 @@ IF (LRAIN) THEN
 !   	 --------------------
 !
 !
-   GACCR(:) = ZRRT(:)>XRTMIN(3) .AND. ZCRT(:)>XCTMIN(3) 
-   IACCR = COUNT(GACCR(:))
-   IF( IACCR>0 ) THEN
-      ALLOCATE(ZZW4(IMICRO)); ZZW4(:) = XACCR1/ZLBDR(:)
-      ALLOCATE(GENABLE_ACCR_SCBU(IMICRO))
-      GENABLE_ACCR_SCBU(:) = ZRRT(:)>1.2*ZZW2(:)/ZRHODREF(:) .OR.           &
-                       ZZW4(:)>=MAX( XACCR2,XACCR3/(XACCR4/ZLBDC(:)-XACCR5) )
-      GACCR(:) = GACCR(:) .AND. ZRCT(:)>XRTMIN(2) .AND. ZCCT(:)>XCTMIN(2) .AND. GENABLE_ACCR_SCBU(:)
-   END IF
-!
-   IACCR = COUNT(GACCR(:))
-   IF( IACCR>0 ) THEN
-      WHERE( GACCR(:).AND.(ZZW4(:)>1.E-4) ) ! Accretion for D>100 10-6 m
-         ZZW3(:) = ZLBDC3(:) / ZLBDR3(:)
-         ZZW1(:) = ( ZCCT(:)*ZCRT(:) / ZLBDC3(:) )*ZRHODREF(:)
-         ZZW2(:) = MIN( ZZW1(:)*(XACCR_CLARGE1+XACCR_CLARGE2*ZZW3(:)),ZCCS(:) )
-         ZCCS(:) = ZCCS(:) - ZZW2(:)
-!
-         ZZW1(:) = ( ZZW1(:) / ZLBDC3(:) )
-         ZZW2(:) = MIN( ZZW1(:)*(XACCR_RLARGE1+XACCR_RLARGE2*ZZW3(:)),ZRCS(:) )
-         ZRCS(:) = ZRCS(:) - ZZW2(:)
-         ZRRS(:) = ZRRS(:) + ZZW2(:)
-      END WHERE
-      WHERE( GACCR(:).AND.(ZZW4(:)<=1.E-4) ) ! Accretion for D<100 10-6 m
-         ZZW3(:) = MIN(ZLBDC3(:) / ZLBDR3(:), 1.E8)
-         ZZW1(:) = ( ZCCT(:)*ZCRT(:) / ZLBDC3(:) )*ZRHODREF(:)
-         ZZW1(:) = ZZW1(:) / ZLBDC3(:)
-         ZZW3(:) = ZZW3(:)**2
-         ZZW2(:) = MIN( ZZW1(:)*(XACCR_CSMALL1+XACCR_CSMALL2*ZZW3(:)),ZCCS(:) )
-         ZCCS(:) = ZCCS(:) - ZZW2(:)
-!
-         ZZW1(:) = ZZW1(:) / ZLBDC3(:)
-         ZZW2(:) = MIN( ZZW1(:)*(XACCR_RSMALL1+XACCR_RSMALL2*ZZW3(:))             &
-                                                          ,ZRCS(:) )
-         ZRCS(:) = ZRCS(:) - ZZW2(:)
-         ZRRS(:) = ZRRS(:) + ZZW2(:)
-      END WHERE
+   IF( IMICRO >= 1 ) THEN
+      GACCR(:) = ZRRT(:)>XRTMIN(3) .AND. ZCRT(:)>XCTMIN(3) 
+      IACCR = COUNT(GACCR(:))
+      IF( IACCR>0 ) THEN
+         ALLOCATE(ZZW4(IMICRO)); ZZW4(:) = XACCR1/ZLBDR(:)
+         ALLOCATE(GENABLE_ACCR_SCBU(IMICRO))
+         GENABLE_ACCR_SCBU(:) = ZRRT(:)>1.2*ZZW2(:)/ZRHODREF(:) .OR.           &
+              ZZW4(:)>=MAX( XACCR2,XACCR3/(XACCR4/ZLBDC(:)-XACCR5) )
+         GACCR(:) = GACCR(:) .AND. ZRCT(:)>XRTMIN(2) .AND. ZCCT(:)>XCTMIN(2) .AND. GENABLE_ACCR_SCBU(:)
+      END IF
+      !
+      IACCR = COUNT(GACCR(:))
+      IF( IACCR>0 ) THEN
+         WHERE( GACCR(:).AND.(ZZW4(:)>1.E-4) ) ! Accretion for D>100 10-6 m
+            ZZW3(:) = ZLBDC3(:) / ZLBDR3(:)
+            ZZW1(:) = ( ZCCT(:)*ZCRT(:) / ZLBDC3(:) )*ZRHODREF(:)
+            ZZW2(:) = MIN( ZZW1(:)*(XACCR_CLARGE1+XACCR_CLARGE2*ZZW3(:)),ZCCS(:) )
+            ZCCS(:) = ZCCS(:) - ZZW2(:)
+            !
+            ZZW1(:) = ( ZZW1(:) / ZLBDC3(:) )
+            ZZW2(:) = MIN( ZZW1(:)*(XACCR_RLARGE1+XACCR_RLARGE2*ZZW3(:)),ZRCS(:) )
+            ZRCS(:) = ZRCS(:) - ZZW2(:)
+            ZRRS(:) = ZRRS(:) + ZZW2(:)
+         END WHERE
+         WHERE( GACCR(:).AND.(ZZW4(:)<=1.E-4) ) ! Accretion for D<100 10-6 m
+            ZZW3(:) = MIN(ZLBDC3(:) / ZLBDR3(:), 1.E8)
+            ZZW1(:) = ( ZCCT(:)*ZCRT(:) / ZLBDC3(:) )*ZRHODREF(:)
+            ZZW1(:) = ZZW1(:) / ZLBDC3(:)
+            ZZW3(:) = ZZW3(:)**2
+            ZZW2(:) = MIN( ZZW1(:)*(XACCR_CSMALL1+XACCR_CSMALL2*ZZW3(:)),ZCCS(:) )
+            ZCCS(:) = ZCCS(:) - ZZW2(:)
+            !
+            ZZW1(:) = ZZW1(:) / ZLBDC3(:)
+            ZZW2(:) = MIN( ZZW1(:)*(XACCR_RSMALL1+XACCR_RSMALL2*ZZW3(:))             &
+                 ,ZRCS(:) )
+            ZRCS(:) = ZRCS(:) - ZZW2(:)
+            ZRRS(:) = ZRRS(:) + ZZW2(:)
+         END WHERE
+      END IF
+      !
+      ZW(:,:,:) = PRCS(:,:,:)
+      PRCS(:,:,:) = UNPACK( ZRCS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
+      ZW(:,:,:) = PRRS(:,:,:)
+      PRRS(:,:,:) = UNPACK( ZRRS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
+      ZW(:,:,:) = PCCS(:,:,:)
+      PCCS(:,:,:) = UNPACK( ZCCS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
    END IF
 !
-!
-   ZW(:,:,:) = PRCS(:,:,:)
-   IF (LBUDGET_RC) CALL BUDGET (                                  &
-               UNPACK(ZRCS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:)) &
-                              *PRHODJ(:,:,:),7 ,'ACCR_BU_RRC')
-   ZW(:,:,:) = PRRS(:,:,:)
-   IF (LBUDGET_RR) CALL BUDGET (                                  &
-               UNPACK(ZRRS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:)) &
-                              *PRHODJ(:,:,:),8 ,'ACCR_BU_RRR')
-   ZW(:,:,:) = PCCS(:,:,:)
-   IF (LBUDGET_SV) CALL BUDGET (                                  &
-               UNPACK(ZCCS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:)) &
-                  *PRHODJ(:,:,:),12+NSV_LIMA_NC,'ACCR_BU_RSV')
+   IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7 ,'ACCR_BU_RRC')
+   IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8 ,'ACCR_BU_RRR')
+   IF (LBUDGET_SV) CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NC,'ACCR_BU_RSV')
 !
 !
 !-------------------------------------------------------------------------------
@@ -382,48 +382,49 @@ IF (LRAIN) THEN
 !   	 -----------------------------------------
 !
 !
-   IF( IACCR>0 ) THEN
-      GSCBU(:) = ZCRT(:)>XCTMIN(3) .AND. GENABLE_ACCR_SCBU(:)
-      ISCBU = COUNT(GSCBU(:))
-   ELSE
-      ISCBU = 0.0
-   END IF
-   IF( ISCBU>0 ) THEN
-!
-!*       5.1  efficiencies
-!
-      IF (.NOT.ALLOCATED(ZZW4)) ALLOCATE(ZZW4(IMICRO))
-      ZZW4(:)  = XACCR1 / ZLBDR(:)                ! Mean diameter
-      ALLOCATE(ZSCBU(IMICRO))
-      ZSCBU(:) = 1.0
-      WHERE (ZZW4(:)>=XSCBU_EFF1 .AND. GSCBU(:))   ZSCBU(:) = &  ! Coalescence
-                            EXP(XSCBUEXP1*(ZZW4(:)-XSCBU_EFF1))  ! efficiency
-      WHERE (ZZW4(:)>=XSCBU_EFF2) ZSCBU(:) = 0.0  ! Break-up
-!
-!*       5.2  integration
-!
-      ZZW1(:) = 0.0
-      ZZW2(:) = 0.0
-      ZZW3(:) = 0.0
-      ZZW4(:) = XACCR1 / ZLBDR(:)                 ! Mean volume drop diameter
-      WHERE (GSCBU(:).AND.(ZZW4(:)>1.E-4))              ! analytical integration
-         ZZW1(:) = XSCBU2 * ZCRT(:)**2 / ZLBDR3(:)   ! D>100 10-6 m
-         ZZW3(:) = ZZW1(:)*ZSCBU(:)
-      END WHERE
-      WHERE (GSCBU(:).AND.(ZZW4(:)<=1.E-4))
-         ZZW2(:) = XSCBU3 *(ZCRT(:) / ZLBDR3(:))**2  ! D<100 10-6 m
-         ZZW3(:) = ZZW2(:)
-      END WHERE
-      ZCRS(:) = ZCRS(:) - MIN( ZCRS(:),ZZW3(:) * ZRHODREF(:) )
-      DEALLOCATE(ZSCBU)
+   IF( IMICRO >= 1 ) THEN
+      IF( IACCR>0 ) THEN
+         GSCBU(:) = ZCRT(:)>XCTMIN(3) .AND. GENABLE_ACCR_SCBU(:)
+         ISCBU = COUNT(GSCBU(:))
+      ELSE
+         ISCBU = 0.0
+      END IF
+      IF( ISCBU>0 ) THEN
+         !
+         !*       5.1  efficiencies
+         !
+         IF (.NOT.ALLOCATED(ZZW4)) ALLOCATE(ZZW4(IMICRO))
+         ZZW4(:)  = XACCR1 / ZLBDR(:)                ! Mean diameter
+         ALLOCATE(ZSCBU(IMICRO))
+         ZSCBU(:) = 1.0
+         WHERE (ZZW4(:)>=XSCBU_EFF1 .AND. GSCBU(:))   ZSCBU(:) = &  ! Coalescence
+              EXP(XSCBUEXP1*(ZZW4(:)-XSCBU_EFF1))  ! efficiency
+         WHERE (ZZW4(:)>=XSCBU_EFF2) ZSCBU(:) = 0.0  ! Break-up
+         !
+         !*       5.2  integration
+         !
+         ZZW1(:) = 0.0
+         ZZW2(:) = 0.0
+         ZZW3(:) = 0.0
+         ZZW4(:) = XACCR1 / ZLBDR(:)                 ! Mean volume drop diameter
+         WHERE (GSCBU(:).AND.(ZZW4(:)>1.E-4))              ! analytical integration
+            ZZW1(:) = XSCBU2 * ZCRT(:)**2 / ZLBDR3(:)   ! D>100 10-6 m
+            ZZW3(:) = ZZW1(:)*ZSCBU(:)
+         END WHERE
+         WHERE (GSCBU(:).AND.(ZZW4(:)<=1.E-4))
+            ZZW2(:) = XSCBU3 *(ZCRT(:) / ZLBDR3(:))**2  ! D<100 10-6 m
+            ZZW3(:) = ZZW2(:)
+         END WHERE
+         ZCRS(:) = ZCRS(:) - MIN( ZCRS(:),ZZW3(:) * ZRHODREF(:) )
+         DEALLOCATE(ZSCBU)
+      END IF
+      !
+      ZW(:,:,:) = PCRS(:,:,:)
+      PCRS(:,:,:) = UNPACK( ZCRS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
    END IF
-!
-!
-   ZW(:,:,:) = PCRS(:,:,:)
-   IF (LBUDGET_SV) CALL BUDGET (                                  &
-               UNPACK(ZCRS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:)) &
-                  *PRHODJ(:,:,:),12+NSV_LIMA_NR,'SCBU_BU_RSV')
-!
+   !
+   IF (LBUDGET_SV) CALL BUDGET (PCRS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NR,'SCBU_BU_RSV')
+   !
 END IF ! LRAIN
 !
 !
@@ -434,15 +435,7 @@ END IF ! LRAIN
 !   	 -------------------
 !
 !
-   ZW(:,:,:) = PRCS(:,:,:)
-   PRCS(:,:,:) = UNPACK( ZRCS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
-   ZW(:,:,:) = PRRS(:,:,:)
-   PRRS(:,:,:) = UNPACK( ZRRS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
-   ZW(:,:,:) = PCCS(:,:,:)
-   PCCS(:,:,:) = UNPACK( ZCCS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
-   ZW(:,:,:) = PCRS(:,:,:)
-   PCRS(:,:,:) = UNPACK( ZCRS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
-!
+IF( IMICRO >= 1 ) THEN
    DEALLOCATE(ZRCT)
    DEALLOCATE(ZRRT)
    DEALLOCATE(ZCCT)
@@ -464,28 +457,6 @@ END IF ! LRAIN
    DEALLOCATE(ZLBDC3)
    DEALLOCATE(ZLBDR)
    DEALLOCATE(ZLBDC)
-!
-!
-!-------------------------------------------------------------------------------
-!
-ELSE
-!*       7. Budgets are forwarded
-!        ------------------------
-!
-!
-   IF (LBUDGET_SV .AND. LRAIN) CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NC,'SELF_BU_RSV')
-!
-   IF (LBUDGET_RC .AND. LRAIN) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7 ,'AUTO_BU_RRC')
-   IF (LBUDGET_RR .AND. LRAIN) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8 ,'AUTO_BU_RRR')
-   IF (LBUDGET_SV .AND. LRAIN) CALL BUDGET (PCRS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NR,'AUTO_BU_RSV')
-   IF (LBUDGET_SV .AND. LRAIN) CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NC,'AUTO_BU_RSV')
-!
-   IF (LBUDGET_RC .AND. LRAIN) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7 ,'ACCR_BU_RRC')
-   IF (LBUDGET_RR .AND. LRAIN) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8 ,'ACCR_BU_RRR')
-   IF (LBUDGET_SV .AND. LRAIN) CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NC,'ACCR_BU_RSV')
-!
-   IF (LBUDGET_SV .AND. LRAIN) CALL BUDGET (PCRS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NR,'SCBU_BU_RSV')
-
 END IF ! IMICRO
 !
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/modd_budget.f90 b/src/MNH/modd_budget.f90
index c39a3436d7a650e609d81ab92ee5980d08bbd581..6d0fe284b5547afc95e41824b4048567acbbcb7f 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-2020 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
 !     ##################
@@ -41,8 +42,9 @@
 !!      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
-!!      B.Vie   03/02/2020 : LIMA negativity checks after turbulence, advection and microphysics budgets 
+!  P. Wautelet 05/2016-04/2018: new data structures and calls for I/O
+!  B. Vié      03/02/2020: LIMA negativity checks after turbulence, advection and microphysics budgets
+!  P. Wautelet 30/06/2020: add NNETURSV, NNEADVSV and NNECONSV variables
 !-------------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
@@ -576,7 +578,10 @@ INTEGER, SAVE :: NHTURBSV   ! horizontal turbulence
 INTEGER, SAVE :: NVTURBSV   ! vertical turbulence
 INTEGER, SAVE :: NCHEMSV    ! chemistry activity
 !
-INTEGER, SAVE :: NNEGASV
+INTEGER, SAVE :: NNEGASV    ! negative correction
+INTEGER, SAVE :: NNETURSV   ! negative correction
+INTEGER, SAVE :: NNEADVSV   ! negative correction
+INTEGER, SAVE :: NNECONSV   ! negative correction
 !
 ! Allowed processes for the budget of electric charge carried by water vapor
 INTEGER, SAVE :: NDEPSQV
diff --git a/src/MNH/modn_budget.f90 b/src/MNH/modn_budget.f90
index 2e0f1f4ec6433fd184ddcb835902edc3aebb13cc..257e023032c00b2e1bf54986b3845ff225422455 100644
--- a/src/MNH/modn_budget.f90
+++ b/src/MNH/modn_budget.f90
@@ -225,7 +225,8 @@
 !!      C. Barthe        /16  add budget terms for LIMA
 !!      C.Lac        10/2016  Add droplet deposition
 !!      S. Riette   11/2016 New budgets for ICE3/ICE4
-!!      B.Vie    03/02/2020 LIMA negativity checks after turbulence, advection and microphysics budgets 
+!  B. Vié      03/02/2020: LIMA negativity checks after turbulence, advection and microphysics budgets
+!  P. Wautelet 30/06/2020: add NNETURSV, NNEADVSV and NNECONSV variables
 !-------------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
@@ -305,7 +306,7 @@ NAMELIST/NAM_BU_RRH/LBU_RRH, NASSERH, NNESTRH, NADVRH, NFRCRH, &
 ! 
 NAMELIST/NAM_BU_RSV/ LBU_RSV, NASSESV, NNESTSV, NADVSV, NFRCSV, &
                      NDIFSV, NRELSV, NDCONVSV, NVTURBSV, NHTURBSV, NCHEMSV, NMAFLSV,       &
-                     NNEGASV,                                                              & 
+                     NNEGASV, NNETURSV, NNEADVSV, NNECONSV,                                &
                      NDEPSQV, NDEPGQV, NREVAQV, NCDEPIQV, NNEUTQV,                         &
                      NAUTOQC, NACCRQC, NRIMQC, NWETGQC, NDRYGQC, NIMLTQC, NBERFIQC,        &
                      NCDEPIQC, NSEDIQC, NNEUTQC,                                           &
diff --git a/src/MNH/one_wayn.f90 b/src/MNH/one_wayn.f90
index 8f922a418ec4e95d2703056d878e542c90953261..176fe1bc526c8a75cc81b5c5a010a9bd07db1f53 100644
--- a/src/MNH/one_wayn.f90
+++ b/src/MNH/one_wayn.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1996-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1996-2020 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -117,9 +117,10 @@ SUBROUTINE ONE_WAY_n(KDAD,PTSTEP,KMI,KTCOUNT,                            &
 !!   J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1
 !!      J.Escobar : 18/12/2015 : Correction of bug in bound in // for NHALO <>1 
 !!      Modification    01/2016  (JP Pinty) Add LIMA
-!!  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 10/04/2019: replace ABORT and STOP calls by Print_msg
 !  P. Wautelet 03/05/2019: restructuration of one_wayn and ini_one_wayn
+!  P. Wautelet 04/06/2020: correct call to Set_conc_lima + initialize ZCONCT
 !------------------------------------------------------------------------------
 !
 !*      0.   DECLARATIONS
@@ -145,12 +146,12 @@ use mode_ll,             only: GET_CHILD_DIM_ll, GO_TOMODEL_ll,
                                LS_FORCING_ll, LWEST_ll, LEAST_ll, LNORTH_ll, LSOUTH_ll, &
                                SET_LSFIELD_1WAY_ll, UNSET_LSFIELD_1WAY_ll
 USE MODE_MODELN_HANDLER, only: GOTO_MODEL
+use mode_set_conc_lima
 use mode_sum_ll,         only: SUM3D_ll
 use mode_tools_ll,       only: GET_DIM_EXT_ll
 !
 USE MODI_SET_CHEMAQ_1WAY
 USE MODI_SET_CONC_ICE_C1R3
-USE MODI_SET_CONC_LIMA
 USE MODI_SET_CONC_RAIN_C2R2
 !
 IMPLICIT NONE
@@ -421,12 +422,13 @@ ENDIF
 IF (HCLOUD=="LIMA"  ) THEN
    IF (CCLOUD/="LIMA") THEN
       ALLOCATE(ZCONCT(SIZE(XRHODJ,1),SIZE(XRHODJ,2),SIZE(XRHODJ,3),NSV_LIMA_A(KMI)))
+      ZCONCT(:, :, :, :) = 0.
       IF (CCLOUD == "REVE") THEN
          ZINIT_TYPE = "INI1"
       ELSE
          ZINIT_TYPE = "NONE"
       END IF
-      CALL SET_CONC_LIMA (ZINIT_TYPE,XRHODREF,XRT,ZCONCT)
+      CALL SET_CONC_LIMA (KMI,ZINIT_TYPE,XRHODREF,XRT,ZCONCT)
       DO JSV=1,NSV_LIMA_A(KMI)
          CALL SET_LSFIELD_1WAY_ll(ZCONCT(:,:,:,JSV),&
               &ZTSVT(:,:,:,JSV-1+NSV_LIMA_BEG_A(KMI)),KMI)
diff --git a/src/MNH/read_all_data_grib_case.f90 b/src/MNH/read_all_data_grib_case.f90
index 968991a463cf75f0d7e4f591c4c04bd419133cb5..030716ac977d58321ffc122cb863b6baa4eea661 100644
--- a/src/MNH/read_all_data_grib_case.f90
+++ b/src/MNH/read_all_data_grib_case.f90
@@ -133,6 +133,7 @@ END MODULE MODI_READ_ALL_DATA_GRIB_CASE
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !  Q. Rodier   16/09/2019: switch of GRIB number ID for orography in ARPEGE/AROME in EPyGrAM
 !  Q. Rodier   27/01/2020: switch of GRIB number ID for orography and hydrometeors in ARPEGE/AROME in EPyGrAM v1.3.7
+!  Q. Rodier   21/04/2020: correction GFS u and v wind component written in the right vertical order
 !-------------------------------------------------------------------------------
 !
 !*      0. DECLARATIONS
@@ -1425,7 +1426,7 @@ DO JLOOP1 = ISTARTLEVEL, ISTARTLEVEL+INLEVEL-1
   IF (IMODEL/=10) THEN ! others than NCEP
     ILEV1 = JLOOP1
   ELSE
-    ILEV1 = IP_GFS(JLOOP1)
+    ILEV1 = IP_GFS(INLEVEL+ISTARTLEVEL-JLOOP1)
   END IF
   ! read component u 
   CALL SEARCH_FIELD(IGRIB,INUM,KPARAM=IPAR,KLEV1=ILEV1)
@@ -1457,7 +1458,7 @@ DO JLOOP1 = ISTARTLEVEL, ISTARTLEVEL+INLEVEL-1
   IF (IMODEL/=10) THEN ! others than NCEP
     ILEV1 = JLOOP1
   ELSE
-    ILEV1 = IP_GFS(JLOOP1)
+    ILEV1 = IP_GFS(INLEVEL+ISTARTLEVEL-JLOOP1)
   END IF
   CALL SEARCH_FIELD(IGRIB,INUM,KPARAM=IPAR+1,KLEV1=ILEV1)
   IF (INUM < 0) THEN
diff --git a/src/MNH/read_field.f90 b/src/MNH/read_field.f90
index a6523b5d5916d74be0ba7dc13a90343ac83cae1e..9a4ea83557c02dcfc0f5305a20f0a1f85fcf52e7 100644
--- a/src/MNH/read_field.f90
+++ b/src/MNH/read_field.f90
@@ -240,6 +240,7 @@ END MODULE MODI_READ_FIELD
 !  P. Wautelet 13/02/2019: removed PPABSM and PTSTEP dummy arguments (bugfix: PPABSM was intent(OUT))
 !!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !  P. Wautelet 14/03/2019: correct ZWS when variable not present in file
+!! M. Leriche  10/06/2019: in restart case read all immersion modes for LIMA
 !!-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -714,11 +715,12 @@ DO JSV = NSV_LIMA_BEG,NSV_LIMA_END
       TZFIELD%CMNHNAME   = TRIM(CLIMA_COLD_NAMES(3))//INDICE//'T'
     END IF
 ! N IMM nucl
-    I = 0
     IF (JSV .GE. NSV_LIMA_IMM_NUCL .AND. JSV .LT. NSV_LIMA_IMM_NUCL + NMOD_IMM) THEN
-      I = I + 1
-      WRITE(INDICE,'(I2.2)')(NINDICE_CCN_IMM(I))
-      TZFIELD%CMNHNAME   = TRIM(CLIMA_COLD_NAMES(4))//INDICE//'T'
+      DO I= 1, NMOD_IMM ! to be supressed
+        WRITE(INDICE,'(I2.2)')(NINDICE_CCN_IMM(I)) ! to be supressed
+!        WRITE(INDICE,'(I2.2)')(NINDICE_CCN_IMM(JSV - NSV_LIMA_BEG - NSV_LIMA_IMM_NUCL + 1))
+        TZFIELD%CMNHNAME   = TRIM(CLIMA_COLD_NAMES(4))//INDICE//'T'
+      ENDDO
     END IF
 ! Hom. freez. of CCN
     IF (JSV .EQ. NSV_LIMA_HOM_HAZE) THEN
@@ -796,7 +798,7 @@ IF (NSV_CHACEND>=NSV_CHACBEG) THEN
     CNAMES(JSV-NSV_CHACBEG+NSV_CHGS+1) = UPCASE(CNAMES(JSV-NSV_CHACBEG+NSV_CHGS+1))
     SELECT CASE(HGETSVT(JSV))
       CASE ('READ')
-        TZFIELD%CMNHNAME   = TRIM(CNAMES(JSV-NSV_CHACBEG+NSV_CHGS+1))//'M'
+        TZFIELD%CMNHNAME   = TRIM(CNAMES(JSV-NSV_CHACBEG+NSV_CHGS+1))//'T'
         TZFIELD%CLONGNAME  = TRIM(TZFIELD%CMNHNAME)
         WRITE(TZFIELD%CCOMMENT,'(A6,A4,I3.3,A4)')'X_Y_Z_','CHAQ',JSV,' (M)'
         CALL IO_Field_read(TPINIFILE,TZFIELD,PSVT(:,:,:,JSV))
@@ -1665,3 +1667,4 @@ END IF
 ! 
 !
 END SUBROUTINE READ_FIELD
+
diff --git a/src/MNH/resolved_cloud.f90 b/src/MNH/resolved_cloud.f90
index 86d118faeb19d98f846ff3c149830ed9ee55d012..4aebcdb849ba9534050bec97b7a9ceadca2e0992 100644
--- a/src/MNH/resolved_cloud.f90
+++ b/src/MNH/resolved_cloud.f90
@@ -270,6 +270,12 @@ END MODULE MODI_RESOLVED_CLOUD
 !!  P. Wautelet 24/02/2020: bugfix: corrected budget name (DEPI->CDEPI) for ice_adjust
 !!                  03/2020 (B.Vie) : LIMA negativity checks after turbulence, advection and microphysics budgets
 !!      B.Vié 03/03/2020 : use DTHRAD instead of dT/dt in Smax diagnostic computation
+!  P. Wautelet 11/06/2020: bugfix: correct ZSVS array indices
+!  P. Wautelet 11/06/2020: bugfix: add "Non local correction for precipitating species" for ICE4
+!  P. Wautelet + Benoit Vié 06/2020: improve removal of negative scalar variables + adapt the corresponding budgets
+!  P. Wautelet 23/06/2020: remove ZSVS and ZSVT to improve code readability
+!  P. Wautelet 30/06/2020: move removal of negative scalar variables to Sources_neg_correct
+!  P. Wautelet 30/06/2020: remove non-local corrections
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -293,6 +299,7 @@ USE MODD_RAIN_ICE_DESCR, ONLY: XRTMIN
 USE MODD_SALT,           ONLY: LSALT
 !
 USE MODE_ll
+use mode_sources_neg_correct, only: Sources_neg_correct
 !
 USE MODI_BUDGET
 USE MODI_C2R2_ADJUST
@@ -456,8 +463,6 @@ REAL  :: ZRATIO                     ! ZMASSTOT / ZMASSCOR
 INTEGER                               :: ISVBEG ! first scalar index for microphysics
 INTEGER                               :: ISVEND ! last  scalar index for microphysics
 REAL, DIMENSION(:),       ALLOCATABLE :: ZRSMIN ! Minimum value for tendencies
-REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZSVT   ! scalar variable for microphysics only
-REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZSVS   ! scalar tendency for microphysics only
 LOGICAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2),SIZE(PZZ,3)):: LLMICRO ! mask to limit computation
 REAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2),SIZE(PZZ,3), KRR) :: ZFPR
 !
@@ -492,15 +497,9 @@ ELSE IF (HCLOUD == 'LIMA') THEN
   ISVEND = NSV_LIMA_END
 ELSE
   ISVBEG = 0
-  ISVEND = 0
+  ISVEND = -1
 END IF
 !
-IF (HCLOUD=='C2R2' .OR. HCLOUD=='C3R5' .OR. HCLOUD=='KHKO' .OR. HCLOUD=='LIMA') THEN
-  ALLOCATE(ZSVT(SIZE(PZZ,1),SIZE(PZZ,2),SIZE(PZZ,3),ISVEND - ISVBEG + 1))
-  ALLOCATE(ZSVS(SIZE(PZZ,1),SIZE(PZZ,2),SIZE(PZZ,3),ISVEND - ISVBEG + 1))
-  ZSVT(:,:,:,:) = PSVT(:,:,:,ISVBEG:ISVEND)
-  ZSVS(:,:,:,:) = PSVS(:,:,:,ISVBEG:ISVEND)
-END IF
 IF (HCLOUD(1:3)=='ICE' .AND. LRED) THEN
   ALLOCATE(ZRSMIN(SIZE(XRTMIN)))
   ZRSMIN(:) = XRTMIN(:) / PTSTEP
@@ -515,8 +514,8 @@ DO JRR = 1,KRR
 END DO
 !
 IF (HCLOUD=='C2R2' .OR. HCLOUD=='C3R5' .OR. HCLOUD=='KHKO' .OR. HCLOUD=='LIMA') THEN
-  DO JSV = 1,SIZE(ZSVS,4)
-    ZSVS(:,:,:,JSV) = ZSVS(:,:,:,JSV) / PRHODJ(:,:,:)
+  DO JSV = ISVBEG, ISVEND
+    PSVS(:,:,:,JSV) = PSVS(:,:,:,JSV) / PRHODJ(:,:,:)
   ENDDO
 ENDIF
 !
@@ -543,18 +542,18 @@ IF(GNORTH .AND. HLBCY(2) /= 'CYCL')  PRT(:,IJE+1:,:,2:) = 0.0
 !
 IF (HCLOUD=='C2R2' .OR. HCLOUD=='C3R5' .OR. HCLOUD=='KHKO' .OR. HCLOUD=='LIMA') THEN
 DO JI=1,JPHEXT
-  ZSVS(JI,:,:,:) = ZSVS(IIB,:,:,:)
-  ZSVS(IIE+JI,:,:,:) = ZSVS(IIE,:,:,:)
-  ZSVS(:,JI,:,:) = ZSVS(:,IJB,:,:)
-  ZSVS(:,IJE+JI,:,:) = ZSVS(:,IJE,:,:)
+  PSVS(JI,     :,      :, ISVBEG:ISVEND) = PSVS(IIB, :,   :, ISVBEG:ISVEND)
+  PSVS(IIE+JI, :,      :, ISVBEG:ISVEND) = PSVS(IIE, :,   :, ISVBEG:ISVEND)
+  PSVS(:,      JI,     :, ISVBEG:ISVEND) = PSVS(:,   IJB, :, ISVBEG:ISVEND)
+  PSVS(:,      IJE+JI, :, ISVBEG:ISVEND) = PSVS(:,   IJE, :, ISVBEG:ISVEND)
 END DO
  !
 !  complete the physical boundaries to avoid some computations
 !
-  IF(GWEST  .AND. HLBCX(1) /= 'CYCL')  ZSVT(:IIB-1,:,:,:) = 0.0
-  IF(GEAST  .AND. HLBCX(2) /= 'CYCL')  ZSVT(IIE+1:,:,:,:) = 0.0
-  IF(GSOUTH .AND. HLBCY(1) /= 'CYCL')  ZSVT(:,:IJB-1,:,:) = 0.0
-  IF(GNORTH .AND. HLBCY(2) /= 'CYCL')  ZSVT(:,IJE+1:,:,:) = 0.0
+  IF(GWEST  .AND. HLBCX(1) /= 'CYCL')  PSVT(:IIB-1, :,      :, ISVBEG:ISVEND) = 0.0
+  IF(GEAST  .AND. HLBCX(2) /= 'CYCL')  PSVT(IIE+1:, :,      :, ISVBEG:ISVEND) = 0.0
+  IF(GSOUTH .AND. HLBCY(1) /= 'CYCL')  PSVT(:,      :IJB-1, :, ISVBEG:ISVEND) = 0.0
+  IF(GNORTH .AND. HLBCY(2) /= 'CYCL')  PSVT(:,      IJE+1:, :, ISVBEG:ISVEND) = 0.0
 ENDIF
 !
 !  complete the vertical boundaries
@@ -570,229 +569,55 @@ PRT(:,:,IKE+1,:) = PRT(:,:,IKE,:)
 !
 IF (HCLOUD == 'C2R2' .OR. HCLOUD == 'C3R5' .OR. HCLOUD == 'KHKO' &
                                            .OR. HCLOUD == 'LIMA') THEN
-  ZSVS(:,:,IKB-1,:) = ZSVS(:,:,IKB,:)
-  ZSVS(:,:,IKE+1,:) = ZSVS(:,:,IKE,:)
-  ZSVT(:,:,IKB-1,:) = ZSVT(:,:,IKB,:)
-  ZSVT(:,:,IKE+1,:) = ZSVT(:,:,IKE,:)
+  PSVS(:,:,IKB-1,ISVBEG:ISVEND) = PSVS(:,:,IKB,ISVBEG:ISVEND)
+  PSVS(:,:,IKE+1,ISVBEG:ISVEND) = PSVS(:,:,IKE,ISVBEG:ISVEND)
+  PSVT(:,:,IKB-1,ISVBEG:ISVEND) = PSVT(:,:,IKB,ISVBEG:ISVEND)
+  PSVT(:,:,IKE+1,ISVBEG:ISVEND) = PSVT(:,:,IKE,ISVBEG:ISVEND)
 ENDIF
 !
-! personal comment:  tranfering these variables to the
-!                    microphysical routines would save
-!                    computing time
-!
-ZEXN(:,:,:)= (PPABST(:,:,:)/XP00)**(XRD/XCPD)
-ZT(:,:,:)= PTHT(:,:,:)*ZEXN(:,:,:)
-ZLV(:,:,:)=XLVTT +(XCPV-XCL) *(ZT(:,:,:)-XTT)
-ZLS(:,:,:)=XLSTT +(XCPV-XCI) *(ZT(:,:,:)-XTT)
-ZCPH(:,:,:)=XCPD +XCPV*PRT(:,:,:,1)
-!
-!
 !*       3.     REMOVE NEGATIVE VALUES
 !               ----------------------
 !
 !*       3.1    Non local correction for precipitating species (Rood 87)
 !
-IF (HCLOUD == 'KESS' .OR. HCLOUD == 'ICE3'                                &
-    .OR. HCLOUD == 'C2R2' .OR. &
-    HCLOUD == 'C3R5' .OR. HCLOUD == 'KHKO' .OR. HCLOUD=='LIMA' ) THEN
-!
-  DO JRR = 3,KRR
-    SELECT CASE (JRR)
-      CASE(3,5,6,7) ! rain, snow, graupel and hail
-
-        IF ( MIN_ll( PRS(:,:,:,JRR), IINFO_ll) < 0.0 ) THEN
-!
-! compute the total water mass computation
-!
-          ZMASSTOT = MAX( 0. , SUM3D_ll( PRS(:,:,:,JRR), IINFO_ll ) )
-!
-! remove the negative values
-!
-          PRS(:,:,:,JRR) = MAX( 0., PRS(:,:,:,JRR) )
-!
-! compute the new total mass
-!
-          ZMASSPOS = MAX(XMNH_TINY,SUM3D_ll( PRS(:,:,:,JRR), IINFO_ll ) )
-!
-! correct again in such a way to conserve the total mass
-!
-          ZRATIO = ZMASSTOT / ZMASSPOS
-          PRS(:,:,:,JRR) = PRS(:,:,:,JRR) * ZRATIO
-!
-        END IF
-    END SELECT
-  END DO
-END IF
+! IF (      HCLOUD == 'KESS'                       &
+!      .OR. HCLOUD == 'ICE3' .OR. HCLOUD == 'ICE4' &
+!      .OR. HCLOUD == 'C2R2' .OR. HCLOUD == 'C3R5' &
+!      .OR. HCLOUD == 'KHKO' .OR. HCLOUD == 'LIMA' ) THEN
+! !
+!   DO JRR = 3,KRR
+!     SELECT CASE (JRR)
+!       CASE(3,5,6,7) ! rain, snow, graupel and hail
+!
+!         IF ( MIN_ll( PRS(:,:,:,JRR), IINFO_ll) < 0.0 ) THEN
+! !
+! ! compute the total water mass computation
+! !
+!           ZMASSTOT = MAX( 0. , SUM3D_ll( PRS(:,:,:,JRR), IINFO_ll ) )
+! !
+! ! remove the negative values
+! !
+!           PRS(:,:,:,JRR) = MAX( 0., PRS(:,:,:,JRR) )
+! !
+! ! compute the new total mass
+! !
+!           ZMASSPOS = MAX(XMNH_TINY,SUM3D_ll( PRS(:,:,:,JRR), IINFO_ll ) )
+! !
+! ! correct again in such a way to conserve the total mass
+! !
+!           ZRATIO = ZMASSTOT / ZMASSPOS
+!           PRS(:,:,:,JRR) = PRS(:,:,:,JRR) * ZRATIO
+! !
+!         END IF
+!     END SELECT
+!   END DO
+! END IF
 !
 !*       3.2    Adjustement for liquid and solid cloud
 !
-SELECT CASE ( HCLOUD )
-  CASE('KESS')
-    WHERE (PRS(:,:,:,2) < 0.)
-      PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,2)
-      PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,2) * ZLV(:,:,:) /  &
-           ZCPH(:,:,:) / PEXNREF(:,:,:)
-      PRS(:,:,:,2) = 0.0
-    END WHERE
-!
-!
-! CASE('C2R2','KHKO')                                 
-!   CALL GET_HALO(PRS(:,:,:,2))
-!   CALL GET_HALO(ZSVS(:,:,:,2))
-!   WHERE (PRS(:,:,:,2) < 0. .OR. ZSVS(:,:,:,2) < 0.)
-!     ZSVS(:,:,:,1) = 0.0
-!   END WHERE
-!   DO JSV = 2, 3
-!     WHERE (PRS(:,:,:,JSV) < 0. .OR. ZSVS(:,:,:,JSV) < 0.)
-!       PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,JSV)
-!       PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,JSV) * ZLV(:,:,:) /  &
-!            ZCPH(:,:,:) / ZEXN(:,:,:)
-!       PRS(:,:,:,JSV)  = 0.0
-!       ZSVS(:,:,:,JSV) = 0.0
-!     END WHERE
-!   ENDDO
-! Commented 03/2013 O.Thouron 
-! (at least necessary to be commented for supersaturation variable)
-!  ZSVS(:,:,:,:) = MAX( 0.0,ZSVS(:,:,:,:) )
-!
-!
-  CASE('ICE3','ICE4')
-    WHERE (PRS(:,:,:,4) < 0.)
-      PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,4)
-      PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,4) * ZLS(:,:,:) /  &
-           ZCPH(:,:,:) / PEXNREF(:,:,:)
-      PRS(:,:,:,4) = 0.
-    END WHERE
-!
-!   cloud
-    WHERE (PRS(:,:,:,2) < 0.)
-      PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,2)
-      PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,2) * ZLV(:,:,:) /  &
-           ZCPH(:,:,:) / PEXNREF(:,:,:)
-      PRS(:,:,:,2) = 0.
-    END WHERE
-!
-! if rc or ri are positive, we can correct negative rv
-!   cloud
-    WHERE ((PRS(:,:,:,1) <0.) .AND. (PRS(:,:,:,2)> 0.) )
-      PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,2)
-      PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,2) * ZLV(:,:,:) /  &
-           ZCPH(:,:,:) / PEXNREF(:,:,:)
-      PRS(:,:,:,2) = 0.
-    END WHERE
-!   ice
-    IF(KRR > 3) THEN
-      WHERE ((PRS(:,:,:,1) < 0.).AND.(PRS(:,:,:,4) > 0.))
-        ZCOR(:,:,:)=MIN(-PRS(:,:,:,1),PRS(:,:,:,4))
-        PRS(:,:,:,1) = PRS(:,:,:,1) + ZCOR(:,:,:)
-        PTHS(:,:,:) = PTHS(:,:,:) - ZCOR(:,:,:) * ZLS(:,:,:) /  &
-             ZCPH(:,:,:) / PEXNREF(:,:,:)
-        PRS(:,:,:,4) = PRS(:,:,:,4) -ZCOR(:,:,:)
-      END WHERE
-    END IF
-!
-   CASE('C3R5')
-    WHERE (PRS(:,:,:,2) < 0. .OR. ZSVS(:,:,:,2) < 0.)
-      ZSVS(:,:,:,1) = 0.0
-    END WHERE
-    DO JSV = 2, 3
-      WHERE (PRS(:,:,:,JSV) < 0. .OR. ZSVS(:,:,:,JSV) < 0.)
-        PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,JSV)
-        PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,JSV) * ZLV(:,:,:) /  &
-             ZCPH(:,:,:) / PEXNREF(:,:,:)
-        PRS(:,:,:,JSV)  = 0.0
-        ZSVS(:,:,:,JSV) = 0.0
-      END WHERE
-    ENDDO
-    ZSVS(:,:,:,:) = MAX( 0.0,ZSVS(:,:,:,:) )
-!   ice
-    WHERE (PRS(:,:,:,4) < 0.)
-      PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,4)
-      PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,4) * ZLV(:,:,:) /  &
-           ZCPH(:,:,:) / PEXNREF(:,:,:)
-      PRS(:,:,:,4)  = 0.0
-      PSVS(:,:,:,4) = 0.0
-    END WHERE
-!   cloud
-    WHERE (PRS(:,:,:,2) < 0.)
-      PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,2)
-      PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,2) * ZLV(:,:,:) /  &
-           ZCPH(:,:,:) / PEXNREF(:,:,:)
-      PRS(:,:,:,2)  = 0.0
-      PSVS(:,:,:,2) = 0.0
-    END WHERE
-    PSVS(:,:,:,:) = MAX( 0.0,PSVS(:,:,:,:) )
-!
-   CASE('LIMA')   
-! Correction where rc<0 or Nc<0
-      IF (OWARM) THEN
-         WHERE (PRS(:,:,:,2) < YRTMIN(2)/PTSTEP .OR. ZSVS(:,:,:,NSV_LIMA_NC) < YCTMIN(2)/PTSTEP)
-            PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,2)
-            PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,2) * ZLV(:,:,:) /  &
-                 ZCPH(:,:,:) / ZEXN(:,:,:)
-            PRS(:,:,:,2)  = 0.0
-            ZSVS(:,:,:,NSV_LIMA_NC) = 0.0
-         END WHERE
-      END IF
-! Correction where rr<0 or Nr<0
-      IF (OWARM .AND. ORAIN) THEN
-         WHERE (PRS(:,:,:,3) < YRTMIN(3)/PTSTEP .OR. ZSVS(:,:,:,NSV_LIMA_NR) < YCTMIN(3)/PTSTEP)
-            PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,3)
-            PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,3) * ZLV(:,:,:) /  &
-                 ZCPH(:,:,:) / ZEXN(:,:,:)
-            PRS(:,:,:,3)  = 0.0
-            ZSVS(:,:,:,NSV_LIMA_NR) = 0.0
-         END WHERE
-      END IF
-! Correction where ri<0 or Ni<0
-      IF (LCOLD) THEN
-         WHERE (PRS(:,:,:,4) < YRTMIN(4)/PTSTEP .OR. ZSVS(:,:,:,NSV_LIMA_NI) < YCTMIN(4)/PTSTEP)
-            PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,4)
-            PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,4) * ZLS(:,:,:) /  &
-                 ZCPH(:,:,:) / ZEXN(:,:,:)
-            PRS(:,:,:,4)  = 0.0
-            ZSVS(:,:,:,NSV_LIMA_NI) = 0.0
-         END WHERE
-      END IF
-!
-     ZSVS(:,:,:,:) = MAX( 0.0,ZSVS(:,:,:,:) )
-     PRS(:,:,:,:) = MAX( 0.0,PRS(:,:,:,:) )
-!
-END SELECT
-!
+! Remove non-physical negative values (unnecessary in a perfect world) + corresponding budgets
+call Sources_neg_correct( hcloud, 'NEGA', krr, ptstep, ppabst, ptht, prt, pths, prs, psvs, prhodj )
 !
-!*       3.3  STORE THE BUDGET TERMS
-!            ----------------------
-!
-IF ((HCLOUD /= 'KHKO') .AND. (HCLOUD /= 'C2R2') ) THEN
- IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)  * PRHODJ(:,:,:), 4,'NEGA_BU_RTH')
- IF (LBUDGET_RV) CALL BUDGET (PRS(:,:,:,1) * PRHODJ(:,:,:), 6,'NEGA_BU_RRV')
- IF (LBUDGET_RC) CALL BUDGET (PRS(:,:,:,2) * PRHODJ(:,:,:), 7,'NEGA_BU_RRC')
-END IF
-IF (LBUDGET_RR) CALL BUDGET (PRS(:,:,:,3) * PRHODJ(:,:,:), 8,'NEGA_BU_RRR')
-IF (LBUDGET_RI) CALL BUDGET (PRS(:,:,:,4) * PRHODJ(:,:,:) ,9,'NEGA_BU_RRI')
-IF (LBUDGET_RS) CALL BUDGET (PRS(:,:,:,5) * PRHODJ(:,:,:),10,'NEGA_BU_RRS')
-IF (LBUDGET_RG) CALL BUDGET (PRS(:,:,:,6) * PRHODJ(:,:,:),11,'NEGA_BU_RRG')
-IF (LBUDGET_RH) CALL BUDGET (PRS(:,:,:,7) * PRHODJ(:,:,:),12,'NEGA_BU_RRH')
-IF (LBUDGET_SV .AND. (HCLOUD == 'LIMA')) THEN
-   IF (OWARM) CALL BUDGET (ZSVS(:,:,:,NSV_LIMA_NC) * PRHODJ(:,:,:),12+NSV_LIMA_NC,'NEGA_BU_RSV')
-   IF (OWARM.AND.ORAIN) CALL BUDGET (ZSVS(:,:,:,NSV_LIMA_NR) * PRHODJ(:,:,:),12+NSV_LIMA_NR,'NEGA_BU_RSV')
-   IF (LCOLD) CALL BUDGET (ZSVS(:,:,:,NSV_LIMA_NI) * PRHODJ(:,:,:),12+NSV_LIMA_NI,'NEGA_BU_RSV')
-   IF (NMOD_CCN.GE.1) THEN
-      DO JL=1, NMOD_CCN
-         CALL BUDGET ( ZSVS(:,:,:,NSV_LIMA_CCN_FREE+JL-1)* &
-              PRHODJ(:,:,:),12+NSV_LIMA_CCN_FREE+JL-1,'NEGA_BU_RSV') 
-      END DO
-   END IF
-   IF (NMOD_IFN.GE.1) THEN
-      DO JL=1, NMOD_IFN
-         CALL BUDGET ( ZSVS(:,:,:,NSV_LIMA_IFN_FREE+JL-1)* &
-              PRHODJ(:,:,:),12+NSV_LIMA_IFN_FREE+JL-1,'NEGA_BU_RSV') 
-      END DO
-   END IF
-END IF
-!
-
 !*       3.4    Limitations of Na and Nc to the CCN max number concentration
 !
 ! Commented by O.Thouron 03/2013
@@ -862,8 +687,9 @@ SELECT CASE ( HCLOUD )
                      PPABST, PTHT, PRT(:,:,:,1), PRT(:,:,:,2),  PRT(:,:,:,3),     &
                      PTHM, PRCM, PPABSM,                                          &
                      PW_ACT,PDTHRAD,PTHS, PRS(:,:,:,1),PRS(:,:,:,2),PRS(:,:,:,3), &
-                     ZSVT(:,:,:,1), ZSVT(:,:,:,2), ZSVT(:,:,:,3),                 &
-                     ZSVS(:,:,:,1), ZSVS(:,:,:,2), ZSVS(:,:,:,3),                 &
+                     PSVT(:,:,:,NSV_C2R2BEG),   PSVT(:,:,:,NSV_C2R2BEG+1),        &
+                     PSVT(:,:,:,NSV_C2R2BEG+2), PSVS(:,:,:,NSV_C2R2BEG),          &
+                     PSVS(:,:,:,NSV_C2R2BEG+1), PSVS(:,:,:,NSV_C2R2BEG+2),        &
                      PINPRC, PINPRR, PINPRR3D, PEVAP3D ,                          &
                      PSVT(:,:,:,:), PSOLORG, PMI, HACTCCN,                        &
                      PINDEP, PSUPSAT, PNACT                                       )
@@ -876,16 +702,17 @@ SELECT CASE ( HCLOUD )
                          PTSTEP, PRHODJ, PPABSM, PPABST, PRHODREF, PZZ,          &
                          PTHT,PRT(:,:,:,1),PRT(:,:,:,2),PRT(:,:,:,3),            &
                          PTHS,PRS(:,:,:,1),PRS(:,:,:,2),PRS(:,:,:,3),            &
-                         ZSVS(:,:,:,2),ZSVS(:,:,:,1),                            &
-                         ZSVS(:,:,:,4), PCLDFR, PSRCS , PNPRO,PSSPRO             )
+                         PSVS(:,:,:,NSV_C2R2BEG+1), PSVS(:,:,:,NSV_C2R2BEG),     &
+                         PSVS(:,:,:,NSV_C2R2BEG+3), PCLDFR, PSRCS, PNPRO, PSSPRO )
 !
    ELSE
-    CALL C2R2_ADJUST ( KRR,TPFILE, HRAD,                              &
-                       HTURBDIM, OCLOSE_OUT, OSUBG_COND, PTSTEP,               &
-                       PRHODJ, PSIGS, PPABST,                                  &
-                       PTHS=PTHS, PRVS=PRS(:,:,:,1), PRCS=PRS(:,:,:,2),        &
-                       PCNUCS=ZSVS(:,:,:,1), PCCS=ZSVS(:,:,:,2),               &
-                       PSRCS=PSRCS, PCLDFR=PCLDFR, PRRS=PRS(:,:,:,3)           )
+    CALL C2R2_ADJUST ( KRR,TPFILE, HRAD,                                &
+                       HTURBDIM, OCLOSE_OUT, OSUBG_COND, PTSTEP,        &
+                       PRHODJ, PSIGS, PPABST,                           &
+                       PTHS=PTHS, PRVS=PRS(:,:,:,1), PRCS=PRS(:,:,:,2), &
+                       PCNUCS=PSVS(:,:,:,NSV_C2R2BEG),                  &
+                       PCCS=PSVS(:,:,:,NSV_C2R2BEG+1),                  &
+                       PSRCS=PSRCS, PCLDFR=PCLDFR, PRRS=PRS(:,:,:,3)    )
 !
    END IF
 !
@@ -1073,34 +900,35 @@ SELECT CASE ( HCLOUD )
                    PRHODREF, PEXNREF, ZDZZ,                                &
                    PRHODJ, PPABSM, PPABST,                                 &
                    NMOD_CCN, NMOD_IFN, NMOD_IMM,                           &
-                   PDTHRAD, PTHT, PRT, ZSVT, PW_ACT,                       &
-                   PTHS, PRS, ZSVS,                                        &
+                   PDTHRAD, PTHT, PRT,                                     &
+                   PSVT(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END), PW_ACT,          &
+                   PTHS, PRS, PSVS(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END),       &
                    PINPRC, PINDEP, PINPRR, ZINPRI, PINPRS, PINPRG, PINPRH, &
-                   PEVAP3D                                         )
+                   PEVAP3D                                                 )
      ELSE
 
-        IF (OWARM) CALL LIMA_WARM(OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP, KMI,   &
-                                  TPFILE, OCLOSE_OUT, KRR, PZZ, PRHODJ,         &
-                                  PRHODREF, PEXNREF, PW_ACT, PPABSM, PPABST,    &
-                                  PDTHRAD, PRCM,                                   &
-                                  PTHT, PRT, ZSVT,                              &
-                                  PTHS, PRS, ZSVS,                              &
-                                  PINPRC, PINPRR, PINDEP, PINPRR3D, PEVAP3D     )
+        IF (OWARM) CALL LIMA_WARM(OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP, KMI,       &
+                                  TPFILE, OCLOSE_OUT, KRR, PZZ, PRHODJ,             &
+                                  PRHODREF, PEXNREF, PW_ACT, PPABSM, PPABST,        &
+                                  PDTHRAD, PRCM,                                    &
+                                  PTHT, PRT, PSVT(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END), &
+                                  PTHS, PRS, PSVS(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END), &
+                                  PINPRC, PINPRR, PINDEP, PINPRR3D, PEVAP3D         )
 !
         IF (LCOLD) CALL LIMA_COLD(OSEDI, OHHONI, KSPLITG, PTSTEP, KMI,               &
                                   KRR, PZZ, PRHODJ,                                  &
                                   PRHODREF, PEXNREF, PPABST, PW_ACT,                 &
                                   PTHM, PPABSM,                                      &
-                                  PTHT, PRT, ZSVT,                                   &
-                                  PTHS, PRS, ZSVS,                                   &
-                                  PINPRS, PINPRG, PINPRH)
-!
-        IF (OWARM .AND. LCOLD) CALL LIMA_MIXED(OSEDI, OHHONI, KSPLITG, PTSTEP, KMI,    &
-                                               KRR, PZZ, PRHODJ,                       &
-                                               PRHODREF, PEXNREF, PPABST, PW_ACT,      &
-                                               PTHM, PPABSM,                           &
-                                               PTHT, PRT, ZSVT,                        &
-                                               PTHS, PRS, ZSVS                         )
+                                  PTHT, PRT, PSVT(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END),  &
+                                  PTHS, PRS, PSVS(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END),  &
+                                  PINPRS, PINPRG, PINPRH                             )
+!
+        IF (OWARM .AND. LCOLD) CALL LIMA_MIXED(OSEDI, OHHONI, KSPLITG, PTSTEP, KMI,              &
+                                               KRR, PZZ, PRHODJ,                                 &
+                                               PRHODREF, PEXNREF, PPABST, PW_ACT,                &
+                                               PTHM, PPABSM,                                     &
+                                               PTHT, PRT, PSVT(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END), &
+                                               PTHS, PRS, PSVS(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END)  )
      ENDIF
 !
 !*       12.2   Perform the saturation adjustment
@@ -1108,7 +936,8 @@ SELECT CASE ( HCLOUD )
      CALL LIMA_ADJUST(KRR, KMI, TPFILE, HRAD,                           &
                       HTURBDIM, OCLOSE_OUT, OSUBG_COND, PTSTEP,         &
                       PRHODREF, PRHODJ, PEXNREF, PPABST, PSIGS, PPABST, &
-                      PRT, PRS, ZSVT, ZSVS,                             &
+                      PRT, PRS, PSVT(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END),  &
+                      PSVS(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END),            &
                       PTHS, PSRCS, PCLDFR                               )
 !
 END SELECT
@@ -1137,185 +966,10 @@ IF(HCLOUD=='ICE3' .OR. HCLOUD=='ICE4' ) THEN
     ENDWHERE
   ENDIF
 ENDIF
-!
-!
-SELECT CASE ( HCLOUD )
-  CASE('KESS')
-    WHERE (PRS(:,:,:,2) < 0.)
-      PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,2)
-      PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,2) * ZLV(:,:,:) /  &
-           ZCPH(:,:,:) / PEXNREF(:,:,:)
-      PRS(:,:,:,2) = 0.0
-    END WHERE
-!
-!
-! CASE('C2R2','KHKO')                                 
-!   CALL GET_HALO(PRS(:,:,:,2))
-!   CALL GET_HALO(ZSVS(:,:,:,2))
-!   WHERE (PRS(:,:,:,2) < 0. .OR. ZSVS(:,:,:,2) < 0.)
-!     ZSVS(:,:,:,1) = 0.0
-!   END WHERE
-!   DO JSV = 2, 3
-!     WHERE (PRS(:,:,:,JSV) < 0. .OR. ZSVS(:,:,:,JSV) < 0.)
-!       PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,JSV)
-!       PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,JSV) * ZLV(:,:,:) /  &
-!            ZCPH(:,:,:) / ZEXN(:,:,:)
-!       PRS(:,:,:,JSV)  = 0.0
-!       ZSVS(:,:,:,JSV) = 0.0
-!     END WHERE
-!   ENDDO
-! Commented 03/2013 O.Thouron 
-! (at least necessary to be commented for supersaturation variable)
-!  ZSVS(:,:,:,:) = MAX( 0.0,ZSVS(:,:,:,:) )
-!
-!
-  CASE('ICE3','ICE4')
-    WHERE (PRS(:,:,:,4) < 0.)
-      PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,4)
-      PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,4) * ZLS(:,:,:) /  &
-           ZCPH(:,:,:) / PEXNREF(:,:,:)
-      PRS(:,:,:,4) = 0.
-    END WHERE
-!
-!   cloud
-    WHERE (PRS(:,:,:,2) < 0.)
-      PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,2)
-      PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,2) * ZLV(:,:,:) /  &
-           ZCPH(:,:,:) / PEXNREF(:,:,:)
-      PRS(:,:,:,2) = 0.
-    END WHERE
-!
-! if rc or ri are positive, we can correct negative rv
-!   cloud
-    WHERE ((PRS(:,:,:,1) <0.) .AND. (PRS(:,:,:,2)> 0.) )
-      PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,2)
-      PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,2) * ZLV(:,:,:) /  &
-           ZCPH(:,:,:) / PEXNREF(:,:,:)
-      PRS(:,:,:,2) = 0.
-    END WHERE
-!   ice
-    IF(KRR > 3) THEN
-      WHERE ((PRS(:,:,:,1) < 0.).AND.(PRS(:,:,:,4) > 0.))
-        ZCOR(:,:,:)=MIN(-PRS(:,:,:,1),PRS(:,:,:,4))
-        PRS(:,:,:,1) = PRS(:,:,:,1) + ZCOR(:,:,:)
-        PTHS(:,:,:) = PTHS(:,:,:) - ZCOR(:,:,:) * ZLS(:,:,:) /  &
-             ZCPH(:,:,:) / PEXNREF(:,:,:)
-        PRS(:,:,:,4) = PRS(:,:,:,4) -ZCOR(:,:,:)
-      END WHERE
-    END IF
-!
-   CASE('C2R2','KHKO')
-    WHERE (PRS(:,:,:,2) < 0. .OR. ZSVS(:,:,:,2) < 0.)
-      ZSVS(:,:,:,1) = 0.0
-    END WHERE
-    DO JSV = 2, 3
-      WHERE (PRS(:,:,:,JSV) < 0. .OR. ZSVS(:,:,:,JSV) < 0.)
-        PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,JSV)
-        PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,JSV) * ZLV(:,:,:) /  &
-             ZCPH(:,:,:) / PEXNREF(:,:,:)
-        PRS(:,:,:,JSV)  = 0.0
-        ZSVS(:,:,:,JSV) = 0.0
-      END WHERE
-    ENDDO
-!      
-   CASE('C3R5')
-    WHERE (PRS(:,:,:,2) < 0. .OR. ZSVS(:,:,:,2) < 0.)
-      ZSVS(:,:,:,1) = 0.0
-    END WHERE
-    DO JSV = 2, 3
-      WHERE (PRS(:,:,:,JSV) < 0. .OR. ZSVS(:,:,:,JSV) < 0.)
-        PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,JSV)
-        PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,JSV) * ZLV(:,:,:) /  &
-             ZCPH(:,:,:) / PEXNREF(:,:,:)
-        PRS(:,:,:,JSV)  = 0.0
-        ZSVS(:,:,:,JSV) = 0.0
-      END WHERE
-    ENDDO
-    ZSVS(:,:,:,:) = MAX( 0.0,ZSVS(:,:,:,:) )
-!   ice
-    WHERE (PRS(:,:,:,4) < 0.)
-      PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,4)
-      PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,4) * ZLV(:,:,:) /  &
-           ZCPH(:,:,:) / PEXNREF(:,:,:)
-      PRS(:,:,:,4)  = 0.0
-      PSVS(:,:,:,4) = 0.0
-    END WHERE
-!   cloud
-    WHERE (PRS(:,:,:,2) < 0.)
-      PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,2)
-      PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,2) * ZLV(:,:,:) /  &
-           ZCPH(:,:,:) / PEXNREF(:,:,:)
-      PRS(:,:,:,2)  = 0.0
-      PSVS(:,:,:,2) = 0.0
-    END WHERE
-    PSVS(:,:,:,:) = MAX( 0.0,PSVS(:,:,:,:) )
-!
-   CASE('LIMA')   
-! Correction where rc<0 or Nc<0
-      IF (OWARM) THEN
-         WHERE (PRS(:,:,:,2) < YRTMIN(2)/PTSTEP .OR. ZSVS(:,:,:,NSV_LIMA_NC) < YCTMIN(2)/PTSTEP)
-            PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,2)
-            PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,2) * ZLV(:,:,:) /  &
-                 ZCPH(:,:,:) / ZEXN(:,:,:)
-            PRS(:,:,:,2)  = 0.0
-            ZSVS(:,:,:,NSV_LIMA_NC) = 0.0
-         END WHERE
-      END IF
-! Correction where rr<0 or Nr<0
-      IF (OWARM .AND. ORAIN) THEN
-         WHERE (PRS(:,:,:,3) < YRTMIN(3)/PTSTEP .OR. ZSVS(:,:,:,NSV_LIMA_NR) < YCTMIN(3)/PTSTEP)
-            PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,3)
-            PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,3) * ZLV(:,:,:) /  &
-                 ZCPH(:,:,:) / ZEXN(:,:,:)
-            PRS(:,:,:,3)  = 0.0
-            ZSVS(:,:,:,NSV_LIMA_NR) = 0.0
-         END WHERE
-      END IF
-! Correction where ri<0 or Ni<0
-      IF (LCOLD) THEN
-         WHERE (PRS(:,:,:,4) < YRTMIN(4)/PTSTEP .OR. ZSVS(:,:,:,NSV_LIMA_NI) < YCTMIN(4)/PTSTEP)
-            PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,4)
-            PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,4) * ZLS(:,:,:) /  &
-                 ZCPH(:,:,:) / ZEXN(:,:,:)
-            PRS(:,:,:,4)  = 0.0
-            ZSVS(:,:,:,NSV_LIMA_NI) = 0.0
-         END WHERE
-      END IF
-!
-     ZSVS(:,:,:,:) = MAX( 0.0,ZSVS(:,:,:,:) )
-     PRS(:,:,:,:) = MAX( 0.0,PRS(:,:,:,:) )
-!
-END SELECT
-!
-!
-!*       3.3  STORE THE BUDGET TERMS
-!            ----------------------
-!
-IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)  * PRHODJ(:,:,:), 4,'NECON_BU_RTH')
-IF (LBUDGET_RV) CALL BUDGET (PRS(:,:,:,1) * PRHODJ(:,:,:), 6,'NECON_BU_RRV')
-IF (LBUDGET_RC) CALL BUDGET (PRS(:,:,:,2) * PRHODJ(:,:,:), 7,'NECON_BU_RRC')
-IF (LBUDGET_RR) CALL BUDGET (PRS(:,:,:,3) * PRHODJ(:,:,:), 8,'NECON_BU_RRR')
-IF (LBUDGET_RI) CALL BUDGET (PRS(:,:,:,4) * PRHODJ(:,:,:) ,9,'NECON_BU_RRI')
-IF (LBUDGET_RS) CALL BUDGET (PRS(:,:,:,5) * PRHODJ(:,:,:),10,'NECON_BU_RRS')
-IF (LBUDGET_RG) CALL BUDGET (PRS(:,:,:,6) * PRHODJ(:,:,:),11,'NECON_BU_RRG')
-IF (LBUDGET_RH) CALL BUDGET (PRS(:,:,:,7) * PRHODJ(:,:,:),12,'NECON_BU_RRH')
-IF (LBUDGET_SV .AND. (HCLOUD == 'LIMA')) THEN
-   IF (OWARM) CALL BUDGET (ZSVS(:,:,:,NSV_LIMA_NC) * PRHODJ(:,:,:),12+NSV_LIMA_NC,'NECON_BU_RSV')
-   IF (OWARM.AND.ORAIN) CALL BUDGET (ZSVS(:,:,:,NSV_LIMA_NR) * PRHODJ(:,:,:),12+NSV_LIMA_NR,'NECON_BU_RSV')
-   IF (LCOLD) CALL BUDGET (ZSVS(:,:,:,NSV_LIMA_NI) * PRHODJ(:,:,:),12+NSV_LIMA_NI,'NECON_BU_RSV')
-   IF (NMOD_CCN.GE.1) THEN
-      DO JL=1, NMOD_CCN
-         CALL BUDGET ( ZSVS(:,:,:,NSV_LIMA_CCN_FREE+JL-1)* &
-              PRHODJ(:,:,:),12+NSV_LIMA_CCN_FREE+JL-1,'NECON_BU_RSV') 
-      END DO
-   END IF
-   IF (NMOD_IFN.GE.1) THEN
-      DO JL=1, NMOD_IFN
-         CALL BUDGET ( ZSVS(:,:,:,NSV_LIMA_IFN_FREE+JL-1)* &
-              PRHODJ(:,:,:),12+NSV_LIMA_IFN_FREE+JL-1,'NECON_BU_RSV') 
-      END DO
-   END IF
-END IF
+
+! Remove non-physical negative values (unnecessary in a perfect world) + corresponding budgets
+call Sources_neg_correct( hcloud, 'NECON', krr, ptstep, ppabst, ptht, prt, pths, prs, psvs, prhodj )
+
 !-------------------------------------------------------------------------------
 !
 !
@@ -1329,14 +983,9 @@ DO JRR = 1,KRR
 END DO
 !
 IF (HCLOUD=='C2R2' .OR. HCLOUD=='C3R5' .OR. HCLOUD=='KHKO' .OR. HCLOUD=='LIMA') THEN
-  DO JSV = 1,SIZE(ZSVS,4)
-    PSVS(:,:,:,JSV+ISVBEG-1) = ZSVS(:,:,:,JSV) * PRHODJ(:,:,:)
-  ENDDO
-  DO JSV = 1,SIZE(ZSVT,4)
-    PSVT(:,:,:,JSV+ISVBEG-1) = ZSVT(:,:,:,JSV)
+  DO JSV = ISVBEG, ISVEND
+    PSVS(:,:,:,JSV) = PSVS(:,:,:,JSV) * PRHODJ(:,:,:)
   ENDDO
-  DEALLOCATE(ZSVS)
-  DEALLOCATE(ZSVT)
 ENDIF
 !
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/set_conc_lima.f90 b/src/MNH/set_conc_lima.f90
index 688d20a6bbef50f36ac33543b1ff3d076dde6543..3eeda7f5adc74f5e6b5f28bf2fd41cb64e56007e 100644
--- a/src/MNH/set_conc_lima.f90
+++ b/src/MNH/set_conc_lima.f90
@@ -1,32 +1,18 @@
-!MNH_LIC Copyright 2000-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2000-2020 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
 !#######################################
-       MODULE MODI_SET_CONC_LIMA
-!      #######################################
-!
-INTERFACE
-!
-      SUBROUTINE SET_CONC_LIMA (HGETCLOUD,PRHODREF,PRT,PSVT)
-!
-CHARACTER (LEN=4),         INTENT(IN) :: HGETCLOUD  ! Get indicator
-REAL, DIMENSION(:,:,:),    INTENT(IN) :: PRHODREF   ! Reference density
-!
-REAL, DIMENSION(:,:,:,:),  INTENT(INOUT) :: PRT     ! microphysical mixing ratios
-!
-REAL,  DIMENSION(:,:,:,:), INTENT(INOUT):: PSVT     ! microphys. concentrations
-!
-!
-END SUBROUTINE SET_CONC_LIMA
-!
-END INTERFACE
-!
-END MODULE MODI_SET_CONC_LIMA
-!
+module mode_set_conc_lima
+!#######################################
+
+implicit none
+
+contains
+
 !     ###########################################################################
-      SUBROUTINE SET_CONC_LIMA (HGETCLOUD,PRHODREF,PRT,PSVT)
+      SUBROUTINE SET_CONC_LIMA( kmi, HGETCLOUD, PRHODREF, PRT, PSVT )
 !     ###########################################################################
 !
 !!****  *SET_CONC_LIMA * - initialize droplet, raindrop and ice
@@ -79,7 +65,9 @@ END MODULE MODI_SET_CONC_LIMA
 !!      Original    15/11/00
 !!                        2014 G.Delautier : remplace MODD_RAIN_C2R2_PARAM par MODD_RAIN_C2R2_KHKO_PARAM        *
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!!  B.Vié : 03/03/2020  secure physical tests
+!  B. Vié      03/03/2020: secure physical tests
+!  P. Wautelet 04/06/2020: correct array start for microphys. concentrations + add kmi dummy argument
+!                          (this subroutine is also called for other models)
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -87,7 +75,8 @@ END MODULE MODI_SET_CONC_LIMA
 !
 USE MODD_PARAM_LIMA,      ONLY : XRTMIN, XCTMIN, LCOLD, LWARM, LRAIN, NMOD_CCN, NMOD_IFN
 USE MODD_PARAM_LIMA_COLD, ONLY : XAI, XBI
-USE MODD_NSV,             ONLY : NSV_LIMA_NC, NSV_LIMA_NR, NSV_LIMA_CCN_ACTI, NSV_LIMA_NI, NSV_LIMA_IFN_NUCL
+USE MODD_NSV,             ONLY : NSV_LIMA_BEG_A, NSV_LIMA_NC_A, NSV_LIMA_NR_A, NSV_LIMA_CCN_ACTI_A, &
+                                 NSV_LIMA_NI_A, NSV_LIMA_IFN_NUCL_A
 USE MODD_CST,             ONLY : XPI, XRHOLW, XRHOLI
 USE MODD_CONF,            ONLY : NVERB
 USE MODD_CONF_n,          ONLY : NRR
@@ -97,12 +86,13 @@ IMPLICIT NONE
 !
 !*       0.1   Declarations of dummy arguments :
 !
+integer,                   intent(in) :: kmi        ! Model number
 CHARACTER (LEN=4),         INTENT(IN) :: HGETCLOUD  ! Get indicator
 REAL, DIMENSION(:,:,:),    INTENT(IN) :: PRHODREF   ! Reference density
 !
 REAL, DIMENSION(:,:,:,:),  INTENT(INOUT) :: PRT     ! microphysical mixing ratios
 !
-REAL,  DIMENSION(:,:,:,:), INTENT(INOUT):: PSVT     ! microphys. concentrations
+REAL,  DIMENSION(:,:,:,NSV_LIMA_BEG_A(kmi):), INTENT(INOUT):: PSVT     ! microphys. concentrations
 !
 !
 !*       0.2   Declarations of local variables :
@@ -126,19 +116,19 @@ IF (LWARM .AND. NRR.GE.2) THEN
 !
    ZCONCC = 300.E6 ! droplet concentration set at 300 cm-3
    WHERE ( PRT(:,:,:,2) > 1.E-11 )
-      PSVT(:,:,:,NSV_LIMA_NC) = ZCONCC
+      PSVT(:,:,:,NSV_LIMA_NC_A(kmi)) = ZCONCC
    END WHERE
    WHERE ( PRT(:,:,:,2) <= 1.E-11 )
       PRT(:,:,:,2)  = 0.0
-      PSVT(:,:,:,NSV_LIMA_NC) = 0.0
+      PSVT(:,:,:,NSV_LIMA_NC_A(kmi)) = 0.0
    END WHERE
    
    IF (NMOD_CCN .GE. 1) THEN
       WHERE ( PRT(:,:,:,2) > 1.E-11 )
-         PSVT(:,:,:,NSV_LIMA_CCN_ACTI) = ZCONCC
+         PSVT(:,:,:,NSV_LIMA_CCN_ACTI_A(kmi)) = ZCONCC
       END WHERE
       WHERE ( PRT(:,:,:,2) <= 1.E-11 )
-         PSVT(:,:,:,NSV_LIMA_CCN_ACTI) = 0.0
+         PSVT(:,:,:,NSV_LIMA_CCN_ACTI_A(kmi)) = 0.0
       END WHERE
    END IF
    
@@ -154,15 +144,15 @@ IF (LWARM .AND. LRAIN .AND. NRR.GE.3) THEN
 !
    ZCONCR = (1.E7)**3/(XPI*XRHOLW) ! cf XCONCR_PARAM_INI in ini_rain_c2r2.f90
    IF (HGETCLOUD == 'INI1') THEN ! init from REVE scheme
-      PSVT(:,:,:,NSV_LIMA_NR) = 0.0
+      PSVT(:,:,:,NSV_LIMA_NR_A(kmi)) = 0.0
    ELSE ! init from KESS, ICE3...
       WHERE ( PRT(:,:,:,3) > 1.E-11 )
-         PSVT(:,:,:,NSV_LIMA_NR) = MAX( SQRT(SQRT(PRHODREF(:,:,:)*PRT(:,:,:,3) &
+         PSVT(:,:,:,NSV_LIMA_NR_A(kmi)) = MAX( SQRT(SQRT(PRHODREF(:,:,:)*PRT(:,:,:,3) &
               *ZCONCR)),1. )
       END WHERE
       WHERE ( PRT(:,:,:,3) <= 1.E-11 )
          PRT(:,:,:,3)  = 0.0
-         PSVT(:,:,:,NSV_LIMA_NR) = 0.0
+         PSVT(:,:,:,NSV_LIMA_NR_A(kmi)) = 0.0
       END WHERE
       IF( NVERB >= 5 ) THEN
          WRITE (UNIT=ILUOUT,FMT=*) "!INI_MODEL$n: The raindrop concentration has "
@@ -178,23 +168,23 @@ IF (LCOLD .AND. NRR.GE.4) THEN
    ZCONCI = 100.E3 ! maximum ice concentration set at 100/L
    WHERE ( PRT(:,:,:,4) > 1.E-11 )
 !
-!      PSVT(:,:,:,NSV_LIMA_NI) = MIN( PRHODREF(:,:,:) /                                     &
+!      PSVT(:,:,:,NSV_LIMA_NI_A(kmi)) = MIN( PRHODREF(:,:,:) /                                     &
 !           ( XRHOLI * XAI*(10.E-06)**XBI * PRT(:,:,:,4) ), &
 !           ZCONCI )
 ! Correction
-      PSVT(:,:,:,NSV_LIMA_NI) = MIN(PRT(:,:,:,4)/(0.82*(10.E-06)**2.5),ZCONCI )
+      PSVT(:,:,:,NSV_LIMA_NI_A(kmi)) = MIN(PRT(:,:,:,4)/(0.82*(10.E-06)**2.5),ZCONCI )
    END WHERE
    WHERE ( PRT(:,:,:,4) <= 1.E-11 )
       PRT(:,:,:,4)  = 0.0
-      PSVT(:,:,:,NSV_LIMA_NI) = 0.0
+      PSVT(:,:,:,NSV_LIMA_NI_A(kmi)) = 0.0
    END WHERE
 
    IF (NMOD_IFN .GE. 1) THEN
       WHERE ( PRT(:,:,:,4) > 1.E-11 )
-         PSVT(:,:,:,NSV_LIMA_IFN_NUCL) = PSVT(:,:,:,NSV_LIMA_NI)
+         PSVT(:,:,:,NSV_LIMA_IFN_NUCL_A(kmi)) = PSVT(:,:,:,NSV_LIMA_NI_A(kmi))
       END WHERE
       WHERE ( PRT(:,:,:,4) <= 1.E-11 )
-         PSVT(:,:,:,NSV_LIMA_IFN_NUCL) = 0.0
+         PSVT(:,:,:,NSV_LIMA_IFN_NUCL_A(kmi)) = 0.0
       END WHERE
    END IF
 
@@ -206,3 +196,5 @@ IF (LCOLD .AND. NRR.GE.4) THEN
 END IF
 !
 END SUBROUTINE SET_CONC_LIMA
+
+end module mode_set_conc_lima
diff --git a/src/MNH/sources_neg_correct.f90 b/src/MNH/sources_neg_correct.f90
new file mode 100644
index 0000000000000000000000000000000000000000..c0fc8062ebb963fa220b99cd750d4925c143aabc
--- /dev/null
+++ b/src/MNH/sources_neg_correct.f90
@@ -0,0 +1,288 @@
+!MNH_LIC Copyright 2020-2020 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
+!MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
+! Author: P. Wautelet 25/06/2020 (deduplication of code from advection_metsv, resolved_cloud and turb)
+! Modifications:
+!  P. Wautelet 30/06/2020: remove non-local corrections in resolved_cloud for NEGA => new local corrections here
+!-----------------------------------------------------------------
+module mode_sources_neg_correct
+
+implicit none
+
+private
+
+public :: Sources_neg_correct
+
+contains
+
+subroutine Sources_neg_correct( hcloud, hbudname, krr, ptstep, ppabst, ptht, prt, prths, prrs, prsvs, prhodj )
+
+use modd_budget,     only: lbudget_th, lbudget_rv, lbudget_rc, lbudget_rr, lbudget_ri, &
+                           lbudget_rs, lbudget_rg, lbudget_rh, lbudget_sv
+use modd_cst,        only: xci, xcl, xcpd, xcpv, xlstt, xlvtt, xp00, xrd, xtt
+use modd_nsv,        only: nsv_c2r2beg, nsv_lima_beg, nsv_lima_end, nsv_lima_nc, nsv_lima_nr, nsv_lima_ni
+use modd_param_lima, only: lcold_lima => lcold, lrain_lima => lrain, lwarm_lima => lwarm, &
+                           xctmin_lima => xctmin, xrtmin_lima => xrtmin
+
+use mode_msg
+
+use modi_budget
+
+implicit none
+
+character(len=*),            intent(in)           :: hcloud   ! Kind of cloud parameterization
+character(len=*),            intent(in)           :: hbudname ! Budget name
+integer,                     intent(in)           :: krr      ! Number of moist variables
+real,                        intent(in)           :: ptstep   ! Timestep
+real, dimension(:, :, :),    intent(in)           :: ppabst   ! Absolute pressure at time t
+real, dimension(:, :, :),    intent(in)           :: ptht     ! Theta at time t
+real, dimension(:, :, :, :), intent(in)           :: prt      ! Moist variables at time t
+real, dimension(:, :, :),    intent(inout)        :: prths    ! Source terms
+real, dimension(:, :, :, :), intent(inout)        :: prrs     ! Source terms
+real, dimension(:, :, :, :), intent(inout)        :: prsvs    ! Source terms
+real, dimension(:, :, :),    intent(in), optional :: prhodj   ! Dry density * jacobian
+
+integer :: ji, jj, jk
+integer :: jr
+integer :: jrmax
+integer :: jsv
+real, dimension(:, :, :), allocatable :: zt, zexn, zlv, zls, zcph, zcor
+
+if ( hbudname /= 'NEADV' .and. hbudname /= 'NECON' .and. hbudname /= 'NEGA' .and. hbudname /= 'NETUR' ) &
+  call Print_msg( NVERB_WARNING, 'GEN', 'Sources_neg_correct', 'budget '//hbudname//' not yet tested' )
+
+allocate( zt  ( Size( prths, 1 ), Size( prths, 2 ), Size( prths, 3 ) ) )
+allocate( zexn( Size( prths, 1 ), Size( prths, 2 ), Size( prths, 3 ) ) )
+allocate( zlv ( Size( prths, 1 ), Size( prths, 2 ), Size( prths, 3 ) ) )
+allocate( zcph( Size( prths, 1 ), Size( prths, 2 ), Size( prths, 3 ) ) )
+
+zexn(:, :, :) = ( ppabst(:, :, :) / xp00 ) ** (xrd / xcpd )
+zt  (:, :, :) = ptht(:, :, :) * zexn(:, :, :)
+zlv (:, :, :) = xlvtt + ( xcpv - xcl ) * ( zt(:, :, :) - xtt )
+if ( hcloud == 'ICE3' .or. hcloud == 'ICE4' .or. hcloud == 'LIMA' ) then
+  allocate( zls( Size( prths, 1 ), Size( prths, 2 ), Size( prths, 3 ) ) )
+  zls(:, :, :) = xlstt + ( xcpv - xci ) * ( zt(:, :, :) - xtt )
+end if
+zcph(:, :, :) = xcpd + xcpv * prt(:, :, :, 1)
+
+deallocate( zt )
+
+CLOUD: select case ( hcloud )
+  case ( 'KESS' )
+    jrmax = Size( prrs, 4 )
+    do jr = 2, jrmax
+      where ( prrs(:, :, :, jr) < 0. )
+        prrs(:, :, :, 1) = prrs(:, :, :, 1) + prrs(:, :, :, jr)
+        prths(:, :, :) = prths(:, :, :) - prrs(:, :, :, jr) * zlv(:, :, :) /  &
+           ( zcph(:, :, :) * zexn(:, :, :) )
+        prrs(:, :, :, jr) = 0.
+      end where
+    end do
+
+    where ( prrs(:, :, :, 1) < 0. .and. prrs(:, :, :, 2) > 0. )
+      prrs(:, :, :, 1) = prrs(:, :, :, 1) + prrs(:, :, :, 2)
+      prths(:, :, :) = prths(:, :, :) - prrs(:, :, :, 2) * zlv(:, :, :) /  &
+           ( zcph(:, :, :) * zexn(:, :, :) )
+      prrs(:, :, :, 2) = 0.
+    end where
+
+
+  case( 'ICE3', 'ICE4' )
+    if ( hbudname == 'NETUR' ) then
+      jrmax = 4
+    else
+      jrmax = Size( prrs, 4 )
+    end if
+    do jr = 4, jrmax
+      where ( prrs(:, :, :, jr) < 0.)
+        prrs(:, :, :, 1) = prrs(:, :, :, 1) + prrs(:, :, :, jr)
+        prths(:, :, :) = prths(:, :, :) - prrs(:, :, :, jr) * zls(:, :, :) /  &
+           ( zcph(:, :, :) * zexn(:, :, :) )
+        prrs(:, :, :, jr) = 0.
+      end where
+    end do
+!
+!   cloud
+    if ( hbudname == 'NETUR' ) then
+      jrmax = 2
+    else
+      jrmax = 3
+    end if
+    do jr = 2, jrmax
+      where ( prrs(:, :, :, jr) < 0.)
+        prrs(:, :, :, 1) = prrs(:, :, :, 1) + prrs(:, :, :, jr)
+        prths(:, :, :) = prths(:, :, :) - prrs(:, :, :, jr) * zlv(:, :, :) /  &
+           ( zcph(:, :, :) * zexn(:, :, :) )
+        prrs(:, :, :, jr) = 0.
+      end where
+    end do
+!
+! if rc or ri are positive, we can correct negative rv
+!   cloud
+    where ( prrs(:, :, :, 1) < 0. .and. prrs(:, :, :, 2) > 0. )
+      prrs(:, :, :, 1) = prrs(:, :, :, 1) + prrs(:, :, :, 2)
+      prths(:, :, :) = prths(:, :, :) - prrs(:, :, :, 2) * zlv(:, :, :) /  &
+           ( zcph(:, :, :) * zexn(:, :, :) )
+      prrs(:, :, :, 2) = 0.
+    end where
+!   ice
+    if ( krr > 3 ) then
+      allocate( zcor( Size( prths, 1 ), Size( prths, 2 ), Size( prths, 3 ) ) )
+      where ( prrs(:, :, :, 1) < 0. .and. prrs(:, :, :, 4) > 0. )
+        zcor(:, :, :) = Min( -prrs(:, :, :, 1), prrs(:, :, :, 4) )
+        prrs(:, :, :, 1) = prrs(:, :, :, 1) + zcor(:, :, :)
+        prths(:, :, :) = prths(:, :, :) - zcor(:, :, :) * zls(:, :, :) /  &
+             ( zcph(:, :, :) * zexn(:, :, :) )
+        prrs(:, :, :, 4) = prrs(:, :, :, 4) - zcor(:, :, :)
+      end where
+    end if
+!
+!
+  case( 'C2R2', 'KHKO' )
+    where ( prrs(:, :, :, 2) < 0. .or. prsvs(:, :, :, nsv_c2r2beg + 1) < 0. )
+      prsvs(:, :, :, nsv_c2r2beg) = 0.
+    end where
+    do jsv = 2, 3
+      where ( prrs(:, :, :, jsv) < 0. .or. prsvs(:, :, :, nsv_c2r2beg - 1 + jsv) < 0. )
+        prrs(:, :, :, 1) = prrs(:, :, :, 1) + prrs(:, :, :, jsv)
+        prths(:, :, :) = prths(:, :, :) - prrs(:, :, :, jsv) * zlv(:, :, :) /  &
+                ( zcph(:, :, :) * zexn(:, :, :) )
+        prrs(:, :, :, jsv)  = 0.
+        prsvs(:, :, :, nsv_c2r2beg - 1 + jsv) = 0.
+      end where
+    end do
+    where ( prrs(:, :, :, 1) < 0. .and. prrs(:, :, :, 2) > 0. )
+      prrs(:, :, :, 1) = prrs(:, :, :, 1) + prrs(:, :, :, 2)
+      prths(:, :, :) = prths(:, :, :) - prrs(:, :, :, 2) * zlv(:, :, :) /  &
+           ( zcph(:, :, :) * zexn(:, :, :) )
+      prrs(:, :, :, 2) = 0.
+      prsvs(:, :, :, nsv_c2r2beg + 1) = 0.
+    end where
+!
+!
+  case( 'LIMA' )
+! Correction where rc<0 or Nc<0
+    if ( lwarm_lima ) then
+      where ( prrs(:, :, :, 2) < xrtmin_lima(2) / ptstep .or. prsvs(:, :, :, nsv_lima_nc) < xctmin_lima(2) / ptstep )
+        prrs(:, :, :, 1) = prrs(:, :, :, 1) + prrs(:, :, :, 2)
+        prths(:, :, :) = prths(:, :, :) - prrs(:, :, :, 2) * zlv(:, :, :) /  &
+                 ( zcph(:, :, :) * zexn(:, :, :) )
+        prrs(:, :, :, 2)  = 0.
+        prsvs(:, :, :, nsv_lima_nc) = 0.
+      end where
+      where ( prrs(:, :, :, 1) < 0. .and. prrs(:, :, :, 2) > 0. )
+        prrs(:, :, :, 1) = prrs(:, :, :, 1) + prrs(:, :, :, 2)
+        prths(:, :, :) = prths(:, :, :) - prrs(:, :, :, 2) * zlv(:, :, :) /  &
+           ( zcph(:, :, :) * zexn(:, :, :) )
+        prrs(:, :, :, 2) = 0.
+        prsvs(:, :, :, nsv_lima_nc) = 0.
+      end where
+    end if
+! Correction where rr<0 or Nr<0
+    if ( lwarm_lima .and. lrain_lima ) then
+      where ( prrs(:, :, :, 3) < xrtmin_lima(3) / ptstep .or. prsvs(:, :, :, nsv_lima_nr) < xctmin_lima(3) / ptstep )
+        prrs(:, :, :, 1) = prrs(:, :, :, 1) + prrs(:, :, :, 3)
+        prths(:, :, :) = prths(:, :, :) - prrs(:, :, :, 3) * zlv(:, :, :) /  &
+                 ( zcph(:, :, :) * zexn(:, :, :) )
+        prrs(:, :, :, 3)  = 0.
+        prsvs(:, :, :, nsv_lima_nr) = 0.
+      end where
+    end if
+! Correction where ri<0 or Ni<0
+    if ( lcold_lima ) then
+      where ( prrs(:, :, :, 4) < xrtmin_lima(4) / ptstep .or. prsvs(:, :, :, nsv_lima_ni) < xctmin_lima(4) / ptstep )
+        prrs(:, :, :, 1) = prrs(:, :, :, 1) + prrs(:, :, :, 4)
+        prths(:, :, :) = prths(:, :, :) - prrs(:, :, :, 4) * zls(:, :, :) /  &
+                 ( zcph(:, :, :) * zexn(:, :, :) )
+        prrs(:, :, :, 4)  = 0.
+        prsvs(:, :, :, nsv_lima_ni) = 0.
+      end where
+      if ( hbudname /= 'NETUR' ) then
+        do jr = 5, Size( prrs, 4 )
+          where ( prrs(:, :, :, jr) < 0. )
+            prrs(:, :, :, 1) = prrs(:, :, :, 1) + prrs(:, :, :, jr)
+            prths(:, :, :) = prths(:, :, :) - prrs(:, :, :, jr) * zls(:, :, :) /  &
+                    ( zcph(:, :, :) * zexn(:, :, :) )
+            prrs(:, :, :, jr) = 0.
+          end where
+        end do
+      end if
+      if(krr > 3) then
+        allocate( zcor( Size( prths, 1 ), Size( prths, 2 ), Size( prths, 3 ) ) )
+        where ( prrs(:, :, :, 1) < 0. .and. prrs(:, :, :, 4) > 0. )
+          zcor(:, :, :) = Min( -prrs(:, :, :, 1), prrs(:, :, :, 4) )
+          prrs(:, :, :, 1) = prrs(:, :, :, 1) + zcor(:, :, :)
+          prths(:, :, :) = prths(:, :, :) - zcor(:, :, :) * zls(:, :, :) /  &
+             ( zcph(:, :, :) * zexn(:, :, :) )
+          prrs(:, :, :, 4) = prrs(:, :, :, 4) - zcor(:, :, :)
+        end where
+        deallocate( zcor )
+      end if
+    end if
+
+    prsvs(:, :, :, nsv_lima_beg : nsv_lima_end) = Max( 0.0, prsvs(:, :, :, nsv_lima_beg : nsv_lima_end) )
+
+end select CLOUD
+
+if ( hbudname /= 'NECON' .and. hbudname /= 'NEGA' ) then
+  if ( hcloud == 'KESS' .or. hcloud == 'ICE3' .or. hcloud == 'ICE4' .or. &
+       hcloud == 'KHKO' .or. hcloud == 'C2R2' .or. hcloud == 'LIMA' ) then
+    if ( lbudget_th ) call Budget( prths(:, :, :),    4, Trim( hbudname )//'_BU_RTH' )
+    if ( lbudget_rv ) call Budget( prrs (:, :, :, 1), 6, Trim( hbudname )//'_BU_RRV' )
+    if ( lbudget_rc ) call Budget( prrs (:, :, :, 2), 7, Trim( hbudname )//'_BU_RRC' )
+    if ( lbudget_rr .and.                                                                                   &
+       (   hbudname /= 'NETUR' .or.                                                                         &
+         ( hbudname == 'NETUR' .and. ( hcloud == 'C2R2' .or. hcloud == 'KHKO' .or. hcloud == 'LIMA' ) ) ) ) &
+      call Budget( prrs(:, :, :, 3), 8, Trim( hbudname )//'_BU_RRR' )
+    IF (lbudget_ri .and.                                                                                    &
+       (   hbudname /= 'NETUR' .or.                                                                         &
+         ( hbudname == 'NETUR' .and. ( hcloud == 'ICE3' .or. hcloud == 'ICE4' .or. hcloud == 'LIMA' ) ) ) ) &
+      call Budget( prrs(:, :, :, 4), 9, Trim( hbudname )//'_BU_RRI' )
+    IF (lbudget_rs .and. hbudname /= 'NETUR' ) call Budget( prrs(:, :, :, 5), 10, Trim( hbudname )//'_BU_RRS' )
+    IF (lbudget_rg .and. hbudname /= 'NETUR' ) call Budget( prrs(:, :, :, 6), 11, Trim( hbudname )//'_BU_RRG' )
+    IF (lbudget_rh .and. hbudname /= 'NETUR' ) call Budget( prrs(:, :, :, 7), 12, Trim( hbudname )//'_BU_RRH' )
+  END IF
+
+  if ( lbudget_sv .and. (hcloud == 'C2R2' .or. hcloud == 'KHKO' ) ) then
+    do ji = 1, 3
+      call Budget( prsvs(:, :, :, nsv_c2r2beg - 1 + ji), 12 + nsv_c2r2beg - 1 + ji, Trim( hbudname )//'_BU_RSV' )
+    end do
+  end if
+  if ( lbudget_sv .and. hcloud == 'LIMA' ) then
+    do ji = nsv_lima_beg, nsv_lima_end
+      call Budget( prsvs(:, :, :, ji), 12 + ji, Trim( hbudname )//'_BU_RSV' )
+    end do
+  end if
+else !NECON + NEGA
+  if ( .not. present( prhodj ) ) &
+    call Print_msg( NVERB_FATAL, 'GEN', 'Sources_neg_correct', 'optional argument prhodj not present' )
+
+  if ( hcloud == 'KESS' .or. hcloud == 'ICE3' .or. hcloud == 'ICE4' .or. &
+       hcloud == 'KHKO' .or. hcloud == 'C2R2' .or. hcloud == 'LIMA' ) then
+    if ( lbudget_th) call Budget( prths(:, :, :)    * prhodj(:, :, :),  4,  Trim( hbudname )//'_BU_RTH' )
+    if ( lbudget_rv) call Budget( prrs (:, :, :, 1) * prhodj(:, :, :),  6,  Trim( hbudname )//'_BU_RRV' )
+    if ( lbudget_rc) call Budget( prrs (:, :, :, 2) * prhodj(:, :, :),  7,  Trim( hbudname )//'_BU_RRC' )
+    if ( lbudget_rr) call Budget( prrs (:, :, :, 3) * prhodj(:, :, :),  8,  Trim( hbudname )//'_BU_RRR' )
+    if ( lbudget_ri) call Budget( prrs (:, :, :, 4) * prhodj(:, :, :),  9,  Trim( hbudname )//'_BU_RRI' )
+    if ( lbudget_rs) call Budget( prrs (:, :, :, 5) * prhodj(:, :, :),  10, Trim( hbudname )//'_BU_RRS' )
+    if ( lbudget_rg) call Budget( prrs (:, :, :, 6) * prhodj(:, :, :),  11, Trim( hbudname )//'_BU_RRG' )
+    if ( lbudget_rh) call Budget( prrs (:, :, :, 7) * prhodj(:, :, :),  12, Trim( hbudname )//'_BU_RRH' )
+  end if
+
+  if ( lbudget_sv .and. (hcloud == 'C2R2' .or. hcloud == 'KHKO' )) then
+    do ji = 1, 3
+      call Budget( prsvs(:, :, :, nsv_c2r2beg - 1 + ji), 12 + nsv_c2r2beg - 1 + ji, Trim( hbudname )//'_BU_RSV' )
+    end do
+  end if
+  if ( lbudget_sv .and. hcloud == 'LIMA' ) then
+    do ji = nsv_lima_beg, nsv_lima_end
+      call Budget( prsvs(:, :, :, ji), 12 + ji, Trim( hbudname )//'_BU_RSV' )
+    end do
+  end if
+end if
+
+end subroutine Sources_neg_correct
+
+end module mode_sources_neg_correct
diff --git a/src/MNH/turb.f90 b/src/MNH/turb.f90
index 8569cce72a47b9f6d62344af6a52a837be247d6f..4d624e5418a37ed2307be67002e2cad2e2ef75a5 100644
--- a/src/MNH/turb.f90
+++ b/src/MNH/turb.f90
@@ -1,4 +1,4 @@
-  !MNH_LIC Copyright 1994-2020 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2020 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -342,8 +342,11 @@ END MODULE MODI_TURB
 !!                     01/2018 (Q.Rodier) Introduction of RM17
 !  P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine
 !  B. Vie         03/2020: LIMA negativity checks after turbulence, advection and microphysics budgets
-!! --------------------------------------------------------------------------
-!       
+!  P. Wautelet 11/06/2020: bugfix: correct PRSVS array indices
+!  P. Wautelet + Benoit Vié 06/2020: improve removal of negative scalar variables + adapt the corresponding budgets
+!  P. Wautelet 30/06/2020: move removal of negative scalar variables to Sources_neg_correct
+! --------------------------------------------------------------------------
+!
 !*      0. DECLARATIONS
 !          ------------
 !
@@ -378,6 +381,7 @@ USE MODI_GET_HALO
 USE MODE_FIELD,          ONLY: TFIELDDATA, TYPEREAL
 USE MODE_IO_FIELD_WRITE, only: IO_Field_write
 USE MODE_SBL
+use mode_sources_neg_correct, only: Sources_neg_correct
 !
 USE MODI_EMOIST
 USE MODI_ETHETA
@@ -1110,139 +1114,10 @@ IF ( KRRL >= 1 ) THEN
     PRTHLS(:,:,:) = PRTHLS(:,:,:) + ZLOCPEXNM(:,:,:) * PRRS(:,:,:,2)
   END IF
 END IF
-!
-SELECT CASE ( HCLOUD )
-  CASE('ICE3','ICE4')
-     ZEXNE(:,:,:)= (PPABST(:,:,:)/XP00)**(XRD/XCPD)
-     ZTT(:,:,:)= PTHLT(:,:,:)*ZEXNE(:,:,:)
-     ZLV(:,:,:)=XLVTT +(XCPV-XCL) *(ZTT(:,:,:)-XTT)
-     ZLS(:,:,:)=XLSTT +(XCPV-XCI) *(ZTT(:,:,:)-XTT)
-     ZCPH(:,:,:)=XCPD +XCPV*PRT(:,:,:,1)
-    WHERE (PRRS(:,:,:,4) < 0.)
-      PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,4)
-      PRTHLS(:,:,:) = PRTHLS(:,:,:) - PRRS(:,:,:,4) * ZLS(:,:,:) /  &
-           ZCPH(:,:,:) / ZEXNE(:,:,:)
-      PRRS(:,:,:,4) = 0.
-    END WHERE
-!
-!   cloud
-    WHERE (PRRS(:,:,:,2) < 0.)
-      PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,2)
-      PRTHLS(:,:,:) = PRTHLS(:,:,:) - PRRS(:,:,:,2) * ZLV(:,:,:) /  &
-           ZCPH(:,:,:) / ZEXNE(:,:,:)
-      PRRS(:,:,:,2) = 0.
-    END WHERE
-!
-! if rc or ri are positive, we can correct negative rv
-!   cloud
-    WHERE ((PRRS(:,:,:,1) <0.) .AND. (PRRS(:,:,:,2)> 0.) )
-      PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,2)
-      PRTHLS(:,:,:) = PRTHLS(:,:,:) - PRRS(:,:,:,2) * ZLV(:,:,:) /  &
-           ZCPH(:,:,:) / ZEXNE(:,:,:)
-      PRRS(:,:,:,2) = 0.
-    END WHERE
-!   ice
-    IF(KRR > 3) THEN
-      WHERE ((PRRS(:,:,:,1) < 0.).AND.(PRRS(:,:,:,4) > 0.))
-        ZCOR(:,:,:)=MIN(-PRRS(:,:,:,1),PRRS(:,:,:,4))
-        PRRS(:,:,:,1) = PRRS(:,:,:,1) + ZCOR(:,:,:)
-        PRTHLS(:,:,:) = PRTHLS(:,:,:) - ZCOR(:,:,:) * ZLS(:,:,:) /  &
-             ZCPH(:,:,:) / ZEXNE(:,:,:)
-        PRRS(:,:,:,4) = PRRS(:,:,:,4) -ZCOR(:,:,:)
-      END WHERE
-    END IF
-!
-  CASE('C2R2','KHKO')
-     ZEXNE(:,:,:)= (PPABST(:,:,:)/XP00)**(XRD/XCPD)
-     ZTT(:,:,:)= PTHLT(:,:,:)*ZEXNE(:,:,:)
-     ZLV(:,:,:)=XLVTT +(XCPV-XCL) *(ZTT(:,:,:)-XTT)
-     ZLS(:,:,:)=XLSTT +(XCPV-XCI) *(ZTT(:,:,:)-XTT)
-     ZCPH(:,:,:)=XCPD +XCPV*PRT(:,:,:,1)
-!  CALL GET_HALO(PRRS(:,:,:,2))
-!  CALL GET_HALO(PRSVS(:,:,:,2))
-!  CALL GET_HALO(PRSVS(:,:,:,3))
-     WHERE (PRRS(:,:,:,2) < 0. .OR. PRSVS(:,:,:,2) < 0.)
-        PRSVS(:,:,:,1) = 0.0
-     END WHERE
-     DO JSV = 2, 3
-        WHERE (PRRS(:,:,:,JSV) < 0. .OR. PRSVS(:,:,:,JSV) < 0.)
-           PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,JSV)
-           PRTHLS(:,:,:) = PRTHLS(:,:,:) - PRRS(:,:,:,JSV) * ZLV(:,:,:) /  &
-                ZCPH(:,:,:) / ZEXNE(:,:,:)
-           PRRS(:,:,:,JSV)  = 0.0
-           PRSVS(:,:,:,JSV) = 0.0
-        END WHERE
-     END DO
-     !
-   CASE('LIMA')   
-     ZEXNE(:,:,:)= (PPABST(:,:,:)/XP00)**(XRD/XCPD)
-     ZTT(:,:,:)= PTHLT(:,:,:)*ZEXNE(:,:,:)
-     ZLV(:,:,:)=XLVTT +(XCPV-XCL) *(ZTT(:,:,:)-XTT)
-     ZLS(:,:,:)=XLSTT +(XCPV-XCI) *(ZTT(:,:,:)-XTT)
-     ZCPH(:,:,:)=XCPD +XCPV*PRT(:,:,:,1)
-! Correction where rc<0 or Nc<0
-      IF (LWARM) THEN
-         WHERE (PRRS(:,:,:,2) < XRTMIN(2)/PTSTEP .OR. PRSVS(:,:,:,NSV_LIMA_NC) < XCTMIN(2)/PTSTEP)
-            PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,2)
-            PRTHLS(:,:,:) = PRTHLS(:,:,:) - PRRS(:,:,:,2) * ZLV(:,:,:) /  &
-                 ZCPH(:,:,:) / ZEXNE(:,:,:)
-            PRRS(:,:,:,2)  = 0.0
-            PRSVS(:,:,:,NSV_LIMA_NC) = 0.0
-         END WHERE
-      END IF
-! Correction where rr<0 or Nr<0
-      IF (LWARM .AND. LRAIN) THEN
-         WHERE (PRRS(:,:,:,3) < XRTMIN(3)/PTSTEP .OR. PRSVS(:,:,:,NSV_LIMA_NR) < XCTMIN(3)/PTSTEP)
-            PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,3)
-            PRTHLS(:,:,:) = PRTHLS(:,:,:) - PRRS(:,:,:,3) * ZLV(:,:,:) /  &
-                 ZCPH(:,:,:) / ZEXNE(:,:,:)
-            PRRS(:,:,:,3)  = 0.0
-            PRSVS(:,:,:,NSV_LIMA_NR) = 0.0
-         END WHERE
-      END IF
-! Correction where ri<0 or Ni<0
-      IF (LCOLD) THEN
-         WHERE (PRRS(:,:,:,4) < XRTMIN(4)/PTSTEP .OR. PRSVS(:,:,:,NSV_LIMA_NI) < XCTMIN(4)/PTSTEP)
-            PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,4)
-            PRTHLS(:,:,:) = PRTHLS(:,:,:) - PRRS(:,:,:,4) * ZLS(:,:,:) /  &
-                 ZCPH(:,:,:) / ZEXNE(:,:,:)
-            PRRS(:,:,:,4)  = 0.0
-            PRSVS(:,:,:,NSV_LIMA_NI) = 0.0
-         END WHERE
-      END IF
-!
-      PRSVS(:,:,:,:) = MAX( 0.0,PRSVS(:,:,:,:) )
-      PRRS(:,:,:,:) = MAX( 0.0,PRRS(:,:,:,:) )
-!
-END SELECT
-!
-IF ((HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2') .OR. (HCLOUD == 'LIMA') ) THEN
-  IF (LBUDGET_TH) CALL BUDGET (PRTHLS(:,:,:), 4,'NETUR_BU_RTH')
-  IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1), 6,'NETUR_BU_RRV')
-  IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2), 7,'NETUR_BU_RRC')
-  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,3), 8,'NETUR_BU_RRR')
-  IF (LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4), 9,'NETUR_BU_RRI')
-  IF (LBUDGET_RS) CALL BUDGET (PRRS(:,:,:,5),10,'NETUR_BU_RRS')
-  IF (LBUDGET_RG) CALL BUDGET (PRRS(:,:,:,6),11,'NETUR_BU_RRG')
-  IF (LBUDGET_RH) CALL BUDGET (PRRS(:,:,:,7),12,'NETUR_BU_RRH')
-END IF
-IF (LBUDGET_SV .AND. (HCLOUD == 'LIMA')) THEN
-   IF (LWARM) CALL BUDGET (PRSVS(:,:,:,NSV_LIMA_NC),12+NSV_LIMA_NC,'NETUR_BU_RSV')
-   IF (LWARM.AND.LRAIN) CALL BUDGET (PRSVS(:,:,:,NSV_LIMA_NR),12+NSV_LIMA_NR,'NETUR_BU_RSV')
-   IF (LCOLD) CALL BUDGET (PRSVS(:,:,:,NSV_LIMA_NI),12+NSV_LIMA_NI,'NETUR_BU_RSV')
-   IF (NMOD_CCN.GE.1) THEN
-      DO JI=1, NMOD_CCN
-         CALL BUDGET ( PRSVS(:,:,:,NSV_LIMA_CCN_FREE+JI-1),12+NSV_LIMA_CCN_FREE+JI-1,'NETUR_BU_RSV') 
-      END DO
-   END IF
-   IF (NMOD_IFN.GE.1) THEN
-      DO JI=1, NMOD_IFN
-         CALL BUDGET ( PRSVS(:,:,:,NSV_LIMA_IFN_FREE+JI-1),12+NSV_LIMA_IFN_FREE+JI-1,'NETUR_BU_RSV') 
-      END DO
-   END IF
-END IF
 
-!
+! Remove non-physical negative values (unnecessary in a perfect world) + corresponding budgets
+call Sources_neg_correct( hcloud, 'NETUR', krr, ptstep, ppabst, pthlt, prt, prthls, prrs, prsvs )
+
 !----------------------------------------------------------------------------
 !
 !*      9. LES averaged surface fluxes
diff --git a/src/MNH/write_lfifm1_for_diag.f90 b/src/MNH/write_lfifm1_for_diag.f90
index 29448bab9ed69fc142cb96a0a161c2d667f772ee..f8759f31be3fd1fba28889b9ef8aedde1d82237e 100644
--- a/src/MNH/write_lfifm1_for_diag.f90
+++ b/src/MNH/write_lfifm1_for_diag.f90
@@ -668,11 +668,11 @@ IF (LVAR_PR .AND. LUSERR .AND. SIZE(XINPRR)>0 ) THEN
     TZFIELD%CUNITS = 'mm hour-1'
     CALL IO_Field_write(TPFILE,TZFIELD,ZWORK21*3.6E6)
   !
-    ZWORK21(:,:) = (XACPRR(:,:) + XACPRS(:,:) + XACPRG(:,:))*1.0E3
+    ZWORK21(:,:) = XACPRR(:,:) + XACPRS(:,:) + XACPRG(:,:)
     IF (SIZE(XINPRC) /= 0 ) &      
-      ZWORK21(:,:) = ZWORK21(:,:) + XACPRC(:,:)*1.0E3
+      ZWORK21(:,:) = ZWORK21(:,:) + XACPRC(:,:)
     IF (SIZE(XINPRH) /= 0 ) &        
-      ZWORK21(:,:) = ZWORK21(:,:) + XACPRH(:,:)*1.0E3
+      ZWORK21(:,:) = ZWORK21(:,:) + XACPRH(:,:)
   !
     CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRT',IID,IRESP)
     TZFIELD = TFIELDLIST(IID)
@@ -1151,11 +1151,12 @@ IF (LLIMA_DIAG) THEN
       TZFIELD%CMNHNAME   = TRIM(CLIMA_COLD_CONC(3))//INDICE//'T'
     END IF
 ! N IMM nucl
-    I = 0
     IF (JSV .GE. NSV_LIMA_IMM_NUCL .AND. JSV .LT. NSV_LIMA_IMM_NUCL + NMOD_IMM) THEN
-      I = I + 1
-      WRITE(INDICE,'(I2.2)')(NINDICE_CCN_IMM(I))
-      TZFIELD%CMNHNAME   = TRIM(CLIMA_COLD_CONC(4))//INDICE//'T'
+      DO I = 1, NMOD_IMM ! to be supressed
+!       WRITE(INDICE,'(I2.2)')(NINDICE_CCN_IMM(JSV - NSV_LIMA_BEG - NSV_LIMA_IMM_NUCL + 1))
+        WRITE(INDICE,'(I2.2)')(NINDICE_CCN_IMM(I)) ! to be supressed
+        TZFIELD%CMNHNAME   = TRIM(CLIMA_COLD_CONC(4))//INDICE//'T'
+      ENDDO
     END IF
 ! Hom. freez. of CCN
     IF (JSV .EQ. NSV_LIMA_HOM_HAZE) THEN
@@ -1199,7 +1200,7 @@ IF (LLIMA_DIAG) THEN
 !
 END IF
 !
-! chemical scalar variables in gas phase PPBV
+! chemical scalar variables in gas phase ppbv
 IF (LCHEMDIAG) THEN
   DO JSV = NSV_CHGSBEG,NSV_CHGSEND
     TZFIELD%CMNHNAME   = TRIM(UPCASE(CNAMES(JSV-NSV_CHGSBEG+1)))//'T'
@@ -1217,8 +1218,7 @@ IF (LCHEMDIAG) THEN
 END IF
 IF (LCHAQDIAG) THEN    !aqueous concentration in M
   TZFIELD%CSTDNAME   = ''
-  !PW TODO: check units
-  TZFIELD%CUNITS     = ''
+  TZFIELD%CUNITS     = 'M'
   TZFIELD%CDIR       = 'XY'
   TZFIELD%NGRID      = 1
   TZFIELD%NTYPE      = TYPEREAL
@@ -1227,9 +1227,9 @@ IF (LCHAQDIAG) THEN    !aqueous concentration in M
   !
   ZWORK31(:,:,:)=0.
   DO JSV = NSV_CHACBEG, NSV_CHACBEG-1+NEQAQ/2   !cloud water
-    TZFIELD%CMNHNAME   = TRIM(CNAMES(JSV-NSV_CHACBEG+NSV_CHGS+1))//'M'
+    TZFIELD%CMNHNAME   = TRIM(CNAMES(JSV-NSV_CHACBEG+NSV_CHGS+1))//'T'
     TZFIELD%CLONGNAME  = TRIM(TZFIELD%CMNHNAME)
-    WRITE(TZFIELD%CCOMMENT,'(A6,A4,I3.3,A4)')'X_Y_Z_','CHAQ',JSV,' (M)'
+    WRITE(TZFIELD%CCOMMENT,'(A6,A4,I3.3)')'X_Y_Z_','CHAQ',JSV
     WHERE(((XRT(:,:,:,2)*XRHODREF(:,:,:))/1.e3) .GE. XRTMIN_AQ)
       ZWORK31(:,:,:)=(XSVT(:,:,:,JSV)*1000.)/(XMD*1.E+3*XRT(:,:,:,2))
     ENDWHERE
@@ -1238,9 +1238,9 @@ IF (LCHAQDIAG) THEN    !aqueous concentration in M
   !
   ZWORK31(:,:,:)=0.
   DO JSV = NSV_CHACBEG+NEQAQ/2, NSV_CHACEND    !rain water
-    TZFIELD%CMNHNAME   = TRIM(CNAMES(JSV-NSV_CHACBEG+NSV_CHGS+1))//'M'
+    TZFIELD%CMNHNAME   = TRIM(CNAMES(JSV-NSV_CHACBEG+NSV_CHGS+1))//'T'
     TZFIELD%CLONGNAME  = TRIM(TZFIELD%CMNHNAME)
-    WRITE(TZFIELD%CCOMMENT,'(A6,A4,I3.3,A4)')'X_Y_Z_','CHAQ',JSV,' (M)'
+    WRITE(TZFIELD%CCOMMENT,'(A6,A4,I3.3)')'X_Y_Z_','CHAQ',JSV
     WHERE(((XRT(:,:,:,3)*XRHODREF(:,:,:))/1.e3) .GE. XRTMIN_AQ)
       ZWORK31(:,:,:)=(XSVT(:,:,:,JSV)*1000.)/(XMD*1.E+3*XRT(:,:,:,3))
     ENDWHERE
diff --git a/src/MNH/write_lfin.f90 b/src/MNH/write_lfin.f90
index e2c1038474ab4d59e9e77a76d6929aa39853eb27..e186429e291ea1f1b17804cbff1209ce8a535246 100644
--- a/src/MNH/write_lfin.f90
+++ b/src/MNH/write_lfin.f90
@@ -761,11 +761,13 @@ IF (NSV >=1) THEN
       TZFIELD%CMNHNAME   = TRIM(CLIMA_COLD_NAMES(3))//INDICE//'T'
     END IF
 ! N IMM nucl
-    I = 0
     IF (JSV .GE. NSV_LIMA_IMM_NUCL .AND. JSV .LT. NSV_LIMA_IMM_NUCL + NMOD_IMM) THEN
-      I = I + 1
-      WRITE(INDICE,'(I2.2)')(NINDICE_CCN_IMM(I))
+      DO I =  1, NMOD_IMM ! to be supressed
+! ML start to 1 to get the CCN mode indice acting as IN by immersion
+!      WRITE(INDICE,'(I2.2)')(NINDICE_CCN_IMM(JSV - NSV_LIMA_BEG - NSV_LIMA_IMM_NUCL + 1))
+        WRITE(INDICE,'(I2.2)')(NINDICE_CCN_IMM(I)) ! to be supresses
       TZFIELD%CMNHNAME   = TRIM(CLIMA_COLD_NAMES(4))//INDICE//'T'
+      ENDDO
     END IF
 ! Hom. freez. of CCN
     IF (JSV .EQ. NSV_LIMA_HOM_HAZE) THEN
diff --git a/src/MNH/xy_to_latlon.f90 b/src/MNH/xy_to_latlon.f90
index 6d3087710bd30150c94a681090cebdd2b1269ceb..f8782a519e3cbe897bd676f5b72d5334b5559ee6 100644
--- a/src/MNH/xy_to_latlon.f90
+++ b/src/MNH/xy_to_latlon.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2006-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1996-2020 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -53,15 +53,17 @@
 !!
 !!    no transfer of the file when closing   Dec. 09, 1996 (V.Masson)
 !!    + changes call to READ_HGRID
-!!  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 07/02/2019: force TYPE to a known value for IO_File_add2list
 !  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!  P. Wautelet 14/04/2020: add missing initializations (XY_TO_LATLON was not working)
 !----------------------------------------------------------------------------
 !
 !*    0.     DECLARATION
 !            -----------
 !
-!
+use MODD_CONF,             only: CPROGRAM
+USE MODD_DIM_n
 USE MODD_GRID
 USE MODD_IO,               ONLY: TFILEDATA
 USE MODD_PGDDIM
@@ -69,10 +71,14 @@ USE MODD_PGDGRID
 USE MODD_PARAMETERS
 USE MODD_LUNIT
 !
+USE MODE_FIELD,            ONLY: INI_FIELD_LIST
 USE MODE_GRIDPROJ
 USE MODE_IO,               only: IO_Config_set, IO_Init
+use MODE_IO_FIELD_READ,    only: IO_Field_read
 USE MODE_IO_FILE,          only: IO_File_close, IO_File_open
 USE MODE_IO_MANAGE_STRUCT, only: IO_File_add2list
+USE MODE_MODELN_HANDLER,   ONLY: GOTO_MODEL
+use MODE_SPLITTINGZ_ll
 !
 USE MODI_INI_CST
 USE MODI_READ_HGRID
@@ -115,16 +121,26 @@ NAMELIST/NAM_INIFILE/ YINIFILE
 !*    1.     Initializations
 !            ---------------
 !
-CALL INI_CST
+CALL GOTO_MODEL(1)
+!
+CALL VERSION()
+!
+CPROGRAM='LAT2XY'
+!
+CALL IO_Init()
+!
+CALL INI_CST()
+!
+CALL INI_FIELD_LIST(1)
 !
 !*    2.     Reading of namelist file
 !            ------------------------
-CALL IO_Init()
 !
 CALL IO_File_add2list(TZNMLFILE,'XY2LATLON1.nam','NML','READ')
 CALL IO_File_open(TZNMLFILE)
 INAM=TZNMLFILE%NLU
 READ(INAM,NAM_INIFILE)
+!
 READ(INAM,NAM_CONFIO)
 CALL IO_Config_set()
 CALL IO_File_close(TZNMLFILE)
@@ -135,6 +151,15 @@ CALL IO_File_close(TZNMLFILE)
 CALL IO_File_add2list(TZINIFILE,TRIM(YINIFILE),'MNH','READ',KLFITYPE=2,KLFIVERB=2)
 CALL IO_File_open(TZINIFILE)
 !
+CALL IO_Field_read(TZINIFILE,'IMAX',  NIMAX)
+CALL IO_Field_read(TZINIFILE,'JMAX',  NJMAX)
+NKMAX = 1
+CALL IO_Field_read(TZINIFILE,'JPHEXT',JPHEXT)
+!
+CALL SET_JP_ll(1,JPHEXT,JPVEXT,JPHEXT)
+CALL SET_DIM_ll(NIMAX, NJMAX, NKMAX)
+CALL INI_PARAZ_ll(IRESP)
+!
 !*    2.     Reading of MESONH file
 !            ----------------------
 !
diff --git a/src/Rules.LXgfortran.mk b/src/Rules.LXgfortran.mk
index 956cd7e4591f67c834a7439a5d819ae6e1b528f3..8a001528d0f33890b7d8fd53158745c9ec87da29 100644
--- a/src/Rules.LXgfortran.mk
+++ b/src/Rules.LXgfortran.mk
@@ -125,6 +125,7 @@ MNH_COMPRESS=yes
 ifeq ($(shell test $(GFV) -ge 1010 ; echo $$?),0)
 OPT_BASE += -fallow-argument-mismatch
 GRIB_FLAGS += -fallow-argument-mismatch
+NETCDF_SUPPFLAGS += -fallow-argument-mismatch
 endif
 ##########################################################
 #                                                        #
diff --git a/src/SURFEX/writesurf_pgd_isba_parn.F90 b/src/SURFEX/writesurf_pgd_isba_parn.F90
index 5b9fa2248459c712aa784d36c00259ec1b9ff934..c3a0cf8e6191085474daa98ad18abe46abbc5032 100644
--- a/src/SURFEX/writesurf_pgd_isba_parn.F90
+++ b/src/SURFEX/writesurf_pgd_isba_parn.F90
@@ -1,4 +1,4 @@
-!SFX_LIC Copyright 2003-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!SFX_LIC Copyright 2003-2020 CNRS, Meteo-France and Universite Paul Sabatier
 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !SFX_LIC for details. version 1.
@@ -36,6 +36,7 @@
 !!      P. Le Moigne 12/2004 : add type of photosynthesis 
 !!      P. Samuelsson 10/2014: MEB
 !!      P. Wautelet 01/2019: bug: write L_STRESS only if it exists
+!!      P. Wautelet 12/06/2020: bugfix: moved condition on LPAR_STRESS (LDATA_STRESS was not written)
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -500,10 +501,10 @@ DO JV=1,DTV%NVEGTYPE
   ENDIF
 ENDDO
 !
-IF (ASSOCIATED(DTV%LPAR_STRESS)) THEN
 YRECFM='L_STRESS'
 YCOMMENT=YRECFM
  CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_STRESS,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
+IF (ASSOCIATED(DTV%LPAR_STRESS)) THEN
 ALLOCATE(ZWORK(SIZE(DTV%LPAR_STRESS,1)))
 DO JV=1,DTV%NVEGTYPE
   IF (DTV%LDATA_STRESS(JV)) THEN
diff --git a/src/configure b/src/configure
index 25a23d27e40781727e295162873a5801e4e92764..31e21f5699a5b8514218bd8a284c4d4319728cfc 100755
--- a/src/configure
+++ b/src/configure
@@ -123,16 +123,15 @@ module load ncl_ncarg/6.3.0
 *Intel*) # Irene Intel core
                 export MNH_ARCH=`echo $ARCH | grep LX`
                 export     ARCH=${MNH_ARCH:-LXifort}
-                export  VER_MPI=${VER_MPI:-MPIINTEL}
+                export  VER_MPI=${VER_MPI:-MPIAUTO}
                 export OPTLEVEL=${OPTLEVEL:-O2}
                 export MVWORK=${MVWORK:-NO}
 		export VER_CDF=${VER_CDF:-CDFAUTO}
                 export MNHENV=${MNHENV:-"
 module purge
 module load intel/18.0.3.222
-module load mpi/intelmpi/2018.0.3.222
+module load mpi/openmpi/2.0.4
 export SLURM_CPU_BIND=none
-export I_MPI_PIN_PROCESSOR_LIST=all:map=spread
 "}
 ;;
 *AMD*) # Irene AMD core
@@ -147,6 +146,7 @@ export I_MPI_PIN_PROCESSOR_LIST=all:map=spread
 module purge
 module load intel/19.0.5.281 
 module load mpi/openmpi/4.0.2
+export SLURM_CPU_BIND=none
 # Set some openmpi variable for pb with nb of cores >> 1024
 export OMPI_MCA_coll_hcoll_enable=0
 export HCOLL_ENABLE_MCAST_ALL=0
diff --git a/src/job_make_examples_BG b/src/job_make_examples_BG
index 3c126674242029a00049b6789ead6dce369308a0..6da925726b7a56986ee9f49780a0f04e26a6b422 100755
--- a/src/job_make_examples_BG
+++ b/src/job_make_examples_BG
@@ -18,7 +18,7 @@
 set -x
 cd $LOADL_STEP_INITDIR
 
-.  ../conf/profile_mesonh-BG-R8I4-MNH-V5-4-2-MPIAUTO-O2
+.  ../conf/profile_mesonh-BG-R8I4-MNH-V5-4-3-MPIAUTO-O2
 
 
 #001_2Drelief 002_3Drelief 003_KW78 004_Reunion 007_16janvier
diff --git a/src/job_make_examples_BGQ b/src/job_make_examples_BGQ
index 5b0bf5246a5d019fffc5dfdb5fafca2b802d4768..d79d3f120d1d920c4987242061804a81218701c7 100755
--- a/src/job_make_examples_BGQ
+++ b/src/job_make_examples_BGQ
@@ -18,7 +18,7 @@
 
 cd $LOADL_STEP_INITDIR
 
-. ../conf/profile_mesonh-BGQ-R8I4-MNH-V5-4-2-MPIAUTO-O2NAN
+. ../conf/profile_mesonh-BGQ-R8I4-MNH-V5-4-3-MPIAUTO-O2NAN
 
 set -x
 
diff --git a/src/job_make_examples_BullX b/src/job_make_examples_BullX
index 6e53b1a9b2257a6da3a8043f3244934822154073..f7b3df0436b43c8ed7cd83fc45aef6ba36cadeda 100755
--- a/src/job_make_examples_BullX
+++ b/src/job_make_examples_BullX
@@ -19,7 +19,7 @@ set -e
 hostname 
 # Echo des commandes
 
-. ../conf/profile_mesonh-LXifort-R8I4-MNH-V5-4-2-MPIINTEL-O3
+. ../conf/profile_mesonh-LXifort-R8I4-MNH-V5-4-3-MPIINTEL-O3
 export MONORUN="Mpirun -np 1 "
 export MPIRUN="Mpirun -np 2 "
 export POSTRUN="time "
diff --git a/src/job_make_examples_BullX_irene b/src/job_make_examples_BullX_irene
index 6e0f0f1f59d713780ab529e523a4b2cdba1e6f87..231bdbf7f163f0a2ee974cfac0f67f795cde82e7 100755
--- a/src/job_make_examples_BullX_irene
+++ b/src/job_make_examples_BullX_irene
@@ -1,8 +1,7 @@
 #!/bin/bash
 #MSUB -J Examples
 #MSUB -N 2            # nodes number
-#MSUB -n 4            # CPUs number (on all nodes) 
-#MSUB --exclusive           
+#MSUB -n 4            # CPUs number (on all nodes)         
 #MSUB -o Examples.eo%j   #
 #MSUB -e Examples.eo%j   #
 #MSUB -T 3600        # time limit
@@ -11,6 +10,7 @@
 #MSUB -x #  exclusive usage of nodes
 #MSUB -X # enable X forwarding -> force 'ccc_msub -i ' to get it work
 #MSUB -q skylake
+##MSUB -q knl
 
 # Echo des commandes
 ulimit -c 0
@@ -21,15 +21,15 @@ set +x
 # Nom de la machine
 hostname 
 
-. ../conf/profile_mesonh-LXifort-R8I4-MNH-V5-4-2-MPIINTEL-O2
+. ../conf/profile_mesonh-LXifort-R8I4-MNH-V5-4-3-MPIAUTO-O2
 
 set -x
 
 module list
 
-export MONORUN="Exec ccc_mprun -n 1 "
-export MPIRUN="Exec ccc_mprun -n 4 "
-export POSTRUN="time "
+export MONORUN="Mpirun -tag-output --report-bindings -np 1 "
+export MPIRUN="Mpirun -tag-output --report-bindings -np 4 "
+export POSTRUN="echo "
 
 cd $SRC_MESONH/MY_RUN/KTEST/003_KW78 
 make -k
diff --git a/src/job_make_examples_BullX_irene_AMD b/src/job_make_examples_BullX_irene_AMD
new file mode 100755
index 0000000000000000000000000000000000000000..b853b78c6797c042a7f0ffffb5c2809f4b55db3e
--- /dev/null
+++ b/src/job_make_examples_BullX_irene_AMD
@@ -0,0 +1,73 @@
+#!/bin/bash
+#MSUB -J Examples
+#MSUB -N 2            # nodes number
+#MSUB -n 4           # CPUs number (on all nodes)           
+#MSUB -o Examples_AMD.eo%j   #
+#MSUB -e Examples_AMD.eo%j   #
+#MSUB -T 3600        # time limit
+#MSUB -I             # do not propaget variable from interactif
+#MSUB -m work,scratch,store # use this files system
+#MSUB -x #  exclusive usage of nodes
+##MSUB -X # enable X forwarding -> force 'ccc_msub -i ' to get it work
+#MSUB -q rome
+
+# Echo des commandes
+ulimit -c 0
+ulimit -s unlimited
+# Arrete du job des la premiere erreur
+#set -e
+set +x
+# Nom de la machine
+hostname 
+
+. ../conf/profile_mesonh-LXifort-R8I4-MNH-V5-4-3-AMD-MPIAUTO-O2
+
+set -x
+
+module list
+
+export MONORUN="Exec srun -l -K --cpu_bind=none --export=ALL -N 1 -n 1 numabind_core_slurm"
+export MPIRUN="Exec srun -l -K --cpu_bind=none  --export=ALL  -n 4 numabind_core_slurm"
+export POSTRUN="echo "
+
+cd $SRC_MESONH/MY_RUN/KTEST/003_KW78 
+make -k
+#
+echo "#################################################################################"
+echo "##CAS SUIVANT####################################################################"
+echo "#################################################################################"
+cd $SRC_MESONH/MY_RUN/KTEST/001_2Drelief 
+make -k
+#
+echo "#################################################################################"
+echo "##CAS SUIVANT####################################################################"
+echo "#################################################################################"
+cd $SRC_MESONH/MY_RUN/KTEST/002_3Drelief 
+make -k
+#
+echo "#################################################################################"
+echo "##CAS SUIVANT####################################################################"
+echo "#################################################################################"
+
+cd $SRC_MESONH/MY_RUN/KTEST/004_Reunion
+make -k << EOF 
+
+
+EOF
+#
+echo "#################################################################################"
+echo "##CAS SUIVANT####################################################################"
+echo "#################################################################################"
+cd $SRC_MESONH/MY_RUN/KTEST/007_16janvier
+make -k << EOF 
+
+
+EOF
+#
+echo "#################################################################################"
+echo "##CAS SUIVANT####################################################################"
+echo "#################################################################################"
+cd $SRC_MESONH/MY_RUN/KTEST/014_LIMA 
+make -k
+
+
diff --git a/src/job_make_examples_BullX_jeanzay b/src/job_make_examples_BullX_jeanzay
index 82ee2e6a67cd69fbdaea3cc6d92201974141e7dc..71ddd1a7653ae74bf3dc4bdc2ee9f7a249ee7a85 100755
--- a/src/job_make_examples_BullX_jeanzay
+++ b/src/job_make_examples_BullX_jeanzay
@@ -21,7 +21,7 @@ hostname
 . ../conf/profile_mesonh-LXifort-R8I4-MNH-V5-4-3-MPIINTEL-O2
 export MONORUN="Exec srun -l -n 1 --export=ALL numabind_core_slurm"
 export MPIRUN="Exec srun -l -n 4 --export=ALL numabind_core_slurm"
-export POSTRUN="time "
+export POSTRUN="echo "
 
 cd $SRC_MESONH/MY_RUN/KTEST/003_KW78 
 make -k
diff --git a/src/job_make_examples_BullX_occigen b/src/job_make_examples_BullX_occigen
index b5f60e5f497a312918e32ff519ac0f883eccdddf..9952bcf9486133b25cd9f5e74d26e14af3fbcfc1 100755
--- a/src/job_make_examples_BullX_occigen
+++ b/src/job_make_examples_BullX_occigen
@@ -18,10 +18,10 @@ set -x
 # Nom de la machine
 hostname 
 
-. ../conf/profile_mesonh-LXifort-R8I4-MNH-V5-4-2-MPIINTEL-O2
+. ../conf/profile_mesonh-LXifort-R8I4-MNH-V5-4-3-MPIINTEL-O2
 export MONORUN="Mpirun -prepend-rank -np 1 "
 export MPIRUN="Mpirun -prepend-rank -np 4 "
-export POSTRUN="time "
+export POSTRUN="echo "
 
 cd $SRC_MESONH/MY_RUN/KTEST/003_KW78 
 make -k
diff --git a/src/job_make_examples_BullX_olympe b/src/job_make_examples_BullX_olympe
index d0c38777382dcbab8a12396a468a46c1ab732dd0..06c0e0d595416ce2994eed3a9b6d6421b34930a7 100755
--- a/src/job_make_examples_BullX_olympe
+++ b/src/job_make_examples_BullX_olympe
@@ -17,10 +17,10 @@ set -x
 # Nom de la machine
 hostname 
 
-. ../conf/profile_mesonh-LXifort-R8I4-MNH-V5-4-2-MPIINTEL-O2
+. ../conf/profile_mesonh-LXifort-R8I4-MNH-V5-4-3-MPIINTEL-O2
 export MONORUN="mpirun -prepend-rank -np 1 "
 export MPIRUN="mpirun -prepend-rank -np 4 "
-export POSTRUN="time "
+export POSTRUN="echo "
 
 cd $SRC_MESONH/MY_RUN/KTEST/003_KW78 
 make -k
diff --git a/src/job_make_examples_CRAY_cca b/src/job_make_examples_CRAY_cca
index f4c87e365bc013585f8f1f738e68128bf72762ac..54c9a164718efb5d59ce26c430c230926730c0f1 100755
--- a/src/job_make_examples_CRAY_cca
+++ b/src/job_make_examples_CRAY_cca
@@ -28,7 +28,7 @@ cd ${PBS_O_WORKDIR}
 
 ARCH=LXifort
 #ARCH=LXcray
-. ../conf/profile_mesonh-${ARCH}-R8I4-MNH-V5-4-2-MPICRAY-O2
+. ../conf/profile_mesonh-${ARCH}-R8I4-MNH-V5-4-3-MPICRAY-O2
 
 
 export MONORUN="aprun -n 1 "
diff --git a/src/job_make_examples_IBM_ada b/src/job_make_examples_IBM_ada
index 43e1d73e003014dfaec460bb66a9a7af339446de..6b7efd0de14094d62506ccc6bef16a61e40efc59 100755
--- a/src/job_make_examples_IBM_ada
+++ b/src/job_make_examples_IBM_ada
@@ -19,7 +19,7 @@
 
 cd $LOADL_STEP_INITDIR
 
-. ../conf/profile_mesonh-LXifort-R8I4-MNH-V5-4-2-MPIINTEL-O2
+. ../conf/profile_mesonh-LXifort-R8I4-MNH-V5-4-3-MPIINTEL-O2
 
 # Pour avoir l'echo des commandes
 set -x
diff --git a/src/job_make_examples_IBM_sp6_vargas b/src/job_make_examples_IBM_sp6_vargas
index 8305c3663166ae8de3a6d8c1a530a6212ca4eaca..daaf5d3f5f24a5e6a9b02cf1689ea4084eff23d0 100755
--- a/src/job_make_examples_IBM_sp6_vargas
+++ b/src/job_make_examples_IBM_sp6_vargas
@@ -24,7 +24,7 @@
 set -x
 cd $LOADL_STEP_INITDIR
 
-.  ../conf/profile_mesonh-AIX64-R8I4-MNH-V5-4-2-MPIAUTO-O2
+.  ../conf/profile_mesonh-AIX64-R8I4-MNH-V5-4-3-MPIAUTO-O2
 
 
 #001_2Drelief 002_3Drelief 003_KW78 004_Reunion 007_16janvier
diff --git a/src/job_make_examples_NEC_SX8 b/src/job_make_examples_NEC_SX8
index fb3a805c0b146a3298f317bb36a053da853fe468..ec4067cdd7726551bdf4dd7a1a5eace7d37693e0 100755
--- a/src/job_make_examples_NEC_SX8
+++ b/src/job_make_examples_NEC_SX8
@@ -18,7 +18,7 @@ hostname
 
 [ -d $PBS_O_WORKDIR ] && cd $PBS_O_WORKDIR
 #
-. ../conf/profile_mesonh-SX8-R8I4-MNH-V5-4-2-MPIAUTO-O4
+. ../conf/profile_mesonh-SX8-R8I4-MNH-V5-4-3-MPIAUTO-O4
 
 export MONORUN="Mpirun -np 1 "
 export MPIRUN="Mpirun -np 2 "
diff --git a/src/job_make_examples_SX8 b/src/job_make_examples_SX8
index de30324180c9cfed2e7d48a28b12cd9304dc6c2c..19893d36c3c7036b8394e135dbaf45954ccdb925 100755
--- a/src/job_make_examples_SX8
+++ b/src/job_make_examples_SX8
@@ -19,7 +19,7 @@ hostname
 [ -d $PBS_O_WORKDIR ] && cd $PBS_O_WORKDIR
 #
 
-. ../conf/profile_mesonh-SX8-R8I4-MNH-V5-4-2-MPIAUTO-O2
+. ../conf/profile_mesonh-SX8-R8I4-MNH-V5-4-3-MPIAUTO-O2
 
 export MONORUN="Mpirun -np 1 "
 export MPIRUN="Mpirun -np 2 "
diff --git a/src/job_make_examples_cxa b/src/job_make_examples_cxa
index f27bea4fbabebbee2a9f2db0497c3428187da7bf..53dc47aed3a98c74f3662b6f78c5117f41ff6d11 100755
--- a/src/job_make_examples_cxa
+++ b/src/job_make_examples_cxa
@@ -34,7 +34,7 @@ echo SHELL=$SHELL
 
 cd $LOADL_STEP_INITDIR
 
-.  ../conf/profile_mesonh-AIX64-R8I4-MNH-V5-4-2-MPIAUTO-O2
+.  ../conf/profile_mesonh-AIX64-R8I4-MNH-V5-4-3-MPIAUTO-O2
 
 ulimit -c 0 # pas de core
 
diff --git a/src/job_make_mesonh_BG b/src/job_make_mesonh_BG
index 5b7a12e9d58ea8d185774eece6ce8486e64066d3..f239dcf20ffb3f4a972e9ec538f75d118ce24f7d 100755
--- a/src/job_make_mesonh_BG
+++ b/src/job_make_mesonh_BG
@@ -18,7 +18,7 @@
 set -x
 cd $LOADL_STEP_INITDIR
 
-. ../conf/profile_mesonh-BG-R8I4-MNH-V5-4-2-MPIAUTO-O2
+. ../conf/profile_mesonh-BG-R8I4-MNH-V5-4-3-MPIAUTO-O2
 
 #time gmake 
 time gmake -r -j8
diff --git a/src/job_make_mesonh_BGQ b/src/job_make_mesonh_BGQ
index 6a8dd4cd7866686189d88ce096466b5229767307..fc3efc0117fe7b30c6ed198c9e17899b26852b87 100755
--- a/src/job_make_mesonh_BGQ
+++ b/src/job_make_mesonh_BGQ
@@ -34,7 +34,7 @@ set -x
 
 cd $LOADL_STEP_INITDIR
 
-. ../conf/profile_mesonh-BGQ-R8I4-MNH-V5-4-2-MPIAUTO-O2NAN
+. ../conf/profile_mesonh-BGQ-R8I4-MNH-V5-4-3-MPIAUTO-O2NAN
 
 case $LOADL_STEP_NAME in
 
diff --git a/src/job_make_mesonh_BullX b/src/job_make_mesonh_BullX
index 0af2e224427ab5a5873e8a65c32e6d52186e746c..96a3af99022bc50f7e41bc929091bbc9c4726112 100755
--- a/src/job_make_mesonh_BullX
+++ b/src/job_make_mesonh_BullX
@@ -19,7 +19,7 @@ set -x
 # On va lancer la compilation dans le répertoire de lancement du job
 pwd
 
-. ../conf/profile_mesonh-LXifort-R8I4-MNH-V5-4-2-MPIINTEL-O3
+. ../conf/profile_mesonh-LXifort-R8I4-MNH-V5-4-3-MPIINTEL-O3
 
 time gmake -j 4
 time gmake -j 1 installmaster
diff --git a/src/job_make_mesonh_CRAY_cca b/src/job_make_mesonh_CRAY_cca
index 1b4de21e1cb8b98a69e7e06b20a2d95590afef7a..44d5a607b2cf6b4e1aac6710f4d6158280dd1a9c 100755
--- a/src/job_make_mesonh_CRAY_cca
+++ b/src/job_make_mesonh_CRAY_cca
@@ -21,7 +21,7 @@ pwd
 
 ARCH=LXifort
 #ARCH=LXcray
-. ../conf/profile_mesonh-${ARCH}-R8I4-MNH-V5-4-2-MPICRAY-O2
+. ../conf/profile_mesonh-${ARCH}-R8I4-MNH-V5-4-3-MPICRAY-O2
 
 time gmake -j 4 2>&1 | tee sortie_compile_${ARCH}.$$
 time gmake -j 4 2>&1 | tee sortie_compile_${ARCH}2.$$
diff --git a/src/job_make_mesonh_IBM_ada b/src/job_make_mesonh_IBM_ada
index 4d64ed118d6792c9582d6ae47500e5dc1d14af48..d2eec06db352d72438706c6cbbb03ce6b2d655aa 100755
--- a/src/job_make_mesonh_IBM_ada
+++ b/src/job_make_mesonh_IBM_ada
@@ -16,7 +16,7 @@
 
 cd $LOADL_STEP_INITDIR
 
-. ../conf/profile_mesonh-LXifort-R8I4-MNH-V5-4-2-MPIINTEL-O2
+. ../conf/profile_mesonh-LXifort-R8I4-MNH-V5-4-3-MPIINTEL-O2
 
 # Pour avoir l'echo des commandes
 set -x
diff --git a/src/job_make_mesonh_IBM_sp6_vargas b/src/job_make_mesonh_IBM_sp6_vargas
index e8f11ad2743ab1306334ca7dca7c86c934f88cae..311f8acb189cc30e797cb96cfdf3b959dc874b24 100755
--- a/src/job_make_mesonh_IBM_sp6_vargas
+++ b/src/job_make_mesonh_IBM_sp6_vargas
@@ -24,7 +24,7 @@
 set -x
 cd $LOADL_STEP_INITDIR
 
-. ../conf/profile_mesonh-AIX64-R8I4-MNH-V5-4-2-MPIAUTO-O2
+. ../conf/profile_mesonh-AIX64-R8I4-MNH-V5-4-3-MPIAUTO-O2
 
 time gmake -j1 gribapi
 time gmake -r -j8
diff --git a/src/job_make_mesonh_MFSX8 b/src/job_make_mesonh_MFSX8
index c1e15619bbad5f99d0e9f9e531ebd76523d5f872..707d71f973c4413086295a439e7e4014d956d36c 100644
--- a/src/job_make_mesonh_MFSX8
+++ b/src/job_make_mesonh_MFSX8
@@ -12,7 +12,7 @@ set -x
 # On va lancer la compilation dans le répertoire de lancement du job
 [ ${PBS_O_WORKDIR} ] && cd ${PBS_O_WORKDIR}
 
-. ../conf/profile_mesonh-SX8-R8I4-MNH-V5-4-2-MPIAUTO-O4
+. ../conf/profile_mesonh-SX8-R8I4-MNH-V5-4-3-MPIAUTO-O4
 
 time gmake  -j 4  ########## compile on four processors to speedup the compilation
 time gmake  -j 1 installmaster
diff --git a/src/job_make_mesonh_NEC_SX8 b/src/job_make_mesonh_NEC_SX8
index d8664fc0532a4602f35a951005a2fe7e94ae3da4..651fe30a7f9fe2a8759254c93a944c9c2a4605ea 100755
--- a/src/job_make_mesonh_NEC_SX8
+++ b/src/job_make_mesonh_NEC_SX8
@@ -11,7 +11,7 @@ set -x
 # On va lancer la compilation dans le répertoire de lancement du job
 [ $PBS_O_WORKDIR ] && cd $PBS_O_WORKDIR
 
-. ../conf/profile_mesonh-SX8-R8I4-MNH-V5-4-2-MPIAUTO-O4
+. ../conf/profile_mesonh-SX8-R8I4-MNH-V5-4-3-MPIAUTO-O4
 
 time gmake  -j 4  
 time gmake  -j 4   #  some time problem with first pass in parallel compilation
diff --git a/src/job_make_mesonh_cxa b/src/job_make_mesonh_cxa
index ad5b3a85872bff807991682be89249424f23f0b5..88de08f162975a58f3bb0c415e3100f7df5994f3 100755
--- a/src/job_make_mesonh_cxa
+++ b/src/job_make_mesonh_cxa
@@ -27,7 +27,7 @@
 set -x
 cd $LOADL_STEP_INITDIR
 
-.  ../conf/profile_mesonh-AIX64-R8I4-MNH-V5-4-2-MPIAUTO-O2
+.  ../conf/profile_mesonh-AIX64-R8I4-MNH-V5-4-3-MPIAUTO-O2
 
 time gmake -r -j1
 time gmake installmaster
diff --git a/src/job_make_mesonh_user_BullX b/src/job_make_mesonh_user_BullX
index 324daaf557e995b4e560308a52b1b820d30cad6e..3c044c434ea4f265761de5ea0ed052ac22e118f2 100755
--- a/src/job_make_mesonh_user_BullX
+++ b/src/job_make_mesonh_user_BullX
@@ -19,7 +19,7 @@ export VER_USER=                ########## Your own USER Directory
 set -x
 
 # On va lancer la compilation dans le répertoire de lancement du job
-. ../conf/profile_mesonh-LXifort-R8I4-MNH-V5-4-2-${VER_USER}-MPIINTEL-O3
+. ../conf/profile_mesonh-LXifort-R8I4-MNH-V5-4-3-${VER_USER}-MPIINTEL-O3
 
 time gmake user
 time gmake -j 1 installuser
diff --git a/src/job_make_mesonh_user_MFSX8 b/src/job_make_mesonh_user_MFSX8
index 407073d7ec4a6023b5a6b2aab6df09d375e2cadc..2ddfd3f4eb41645c5767fe9860fac592a1400443 100644
--- a/src/job_make_mesonh_user_MFSX8
+++ b/src/job_make_mesonh_user_MFSX8
@@ -14,7 +14,7 @@ set -x
 [ ${PBS_O_WORKDIR} ] && cd ${PBS_O_WORKDIR}
 
 
-. ../conf/profile_mesonh-SX8-R8I4-MNH-V5-4-2-${VER_USER}-MPIAUTO-O4
+. ../conf/profile_mesonh-SX8-R8I4-MNH-V5-4-3-${VER_USER}-MPIAUTO-O4
 
 time gmake user
 time gmake -j 1 installuser