diff --git a/src/mesonh/ext/default_desfmn.f90 b/src/mesonh/ext/default_desfmn.f90
index e9cbb0eae15067ee85f9c9c21611520fa9144839..b5b8b062cd9e131280a96e635a6a1c5bf0cf6636 100644
--- a/src/mesonh/ext/default_desfmn.f90
+++ b/src/mesonh/ext/default_desfmn.f90
@@ -311,7 +311,7 @@ USE MODD_IBM_LSF
 #ifdef MNH_FOREFIRE
 USE MODD_FOREFIRE
 #endif
-USE MODD_FIRE
+USE MODD_FIRE_n
 !
 IMPLICIT NONE
 !
@@ -1426,68 +1426,66 @@ ENDIF
   XARECYCLS  = 0.
   XDRECYCLE  = 0.
   XARECYCLE  = 0.
-  XTMOY      = 0.
-  XTMOYCOUNT = 0.
-  XNUMBELT   = 28.
+  NTMOY      = 0
+  NTMOYCOUNT = 0
+  NNUMBELT   = 28
   XRCOEFF    = 0.2
   XTBVTOP    = 500.
   XTBVBOT    = 300.
 !
 !-------------------------------------------------------------------------------
 !
-!*      33.   SET DEFAULT VALUES FOR MODD_FIRE
-!             --------------------------------
+!*      33.   SET DEFAULT VALUES FOR MODD_FIRE_n
+!             ----------------------------------
 !
 ! Blaze fire model namelist
 !
-IF (KMI == 1) THEN
-  LBLAZE = .FALSE.	            ! Flag for Fire model use, default FALSE
-  !
-  CPROPAG_MODEL = 'SANTONI2011' ! Fire propagation model (default SANTONI2011)
-  !
-  CHEAT_FLUX_MODEL   = 'EXS'	  ! Sensible heat flux injection model (default EXS)
-  CLATENT_FLUX_MODEL = 'EXP'	  ! latent heat flux injection model (default EXP)
-  XFERR = 0.8                   ! Energy released in flamming stage (only for EXP)
-  !
-  CFIRE_CPL_MODE = '2WAYCPL'    ! Coupling mode (default 2way coupled)
-  CBMAPFILE = CINIFILE          ! File name of BMAP for FIR2ATM mode
-  LINTERPWIND = .TRUE.          ! Horizontal interpolation of wind
-  LSGBAWEIGHT = .FALSE.         ! Flag for use of weighted average method for SubGrid Burning Area computation
-  !
-  NFIRE_WENO_ORDER = 3	        ! Weno order (1,3,5)
-  NFIRE_RK_ORDER = 3	          ! Runge Kutta order (1,2,3,4)
-  !
-  NREFINX = 1	                  ! Refinement ratio X
-  NREFINY	= 1                   ! Refinement ratio Y
-  !
-  XCFLMAXFIRE = 0.8             ! Max CFL on fire mesh
-  XLSDIFFUSION = 0.1            ! Numerical diffusion of LevelSet
-  XROSDIFFUSION = 0.05          ! Numerical diffusion of ROS
-  !
-  XFLUXZEXT = 3.                ! Flux distribution on vertical caracteristic length
-  XFLUXZMAX = 4. * XFLUXZEXT    ! Flux distribution on vertical max injetion height
-  !
-  XFLXCOEFTMP = 1.              ! Flux multiplicator. For testing
-  !
-  LWINDFILTER = .FALSE.         ! Fire wind filtering flag
-  CWINDFILTER = 'EWAM'	        ! Wind filter method (EWAM or WLIM)
-  XEWAMTAU    = 20.             ! Time averaging constant for EWAM method (s)
-  XWLIMUTH    = 8.              ! Thresehold wind value for WLIM method (m/s)
-  XWLIMUTMAX  = 9.              ! Maximum wind value for WLIM method (m/s) (needs to be >= XWLIMUTH )
-  !
-  NNBSMOKETRACER = 1            ! Nb of smoke tracers
-  !
-  NWINDSLOPECPLMODE = 0         ! Flag for use of wind/slope in ROS (0 = wind + slope, 1 = wind only, 2 = slope only (U0=0))
-  !
-  !
-  !
-  !! DO NOT CHANGE BELOW PARAMETERS
-  XFIREMESHSIZE(:) = 0.         ! Fire mesh size (dxf,dyf)
-  LRESTA_ASE = .FALSE.          ! Flag for using ASE in RESTA file
-  LRESTA_AWC = .FALSE.          ! Flag for using AWC in RESTA file
-  LRESTA_EWAM = .FALSE.         ! Flag for using EWAM in RESTA file
-  LRESTA_WLIM = .FALSE.         ! Flag for using WLIM in RESTA file
-ENDIF
+LBLAZE = .FALSE.              ! Flag for Fire model use, default FALSE
+!
+CPROPAG_MODEL = 'SANTONI2011' ! Fire propagation model (default SANTONI2011)
+!
+CHEAT_FLUX_MODEL   = 'EXS'    ! Sensible heat flux injection model (default EXS)
+CLATENT_FLUX_MODEL = 'EXP'    ! latent heat flux injection model (default EXP)
+XFERR = 0.8                   ! Energy released in flamming stage (only for EXP)
+!
+CFIRE_CPL_MODE = '2WAYCPL'    ! Coupling mode (default 2way coupled)
+CBMAPFILE = CINIFILE          ! File name of BMAP for FIR2ATM mode
+LINTERPWIND = .TRUE.          ! Horizontal interpolation of wind
+LSGBAWEIGHT = .FALSE.         ! Flag for use of weighted average method for SubGrid Burning Area computation
+!
+NFIRE_WENO_ORDER = 3          ! Weno order (1,3,5)
+NFIRE_RK_ORDER = 3            ! Runge Kutta order (1,2,3,4)
+!
+NREFINX = 1                   ! Refinement ratio X
+NREFINY = 1                   ! Refinement ratio Y
+!
+XCFLMAXFIRE = 0.8             ! Max CFL on fire mesh
+XLSDIFFUSION = 0.1            ! Numerical diffusion of LevelSet
+XROSDIFFUSION = 0.05          ! Numerical diffusion of ROS
+!
+XFLUXZEXT = 3.                ! Flux distribution on vertical caracteristic length
+XFLUXZMAX = 4. * XFLUXZEXT    ! Flux distribution on vertical max injetion height
+!
+XFLXCOEFTMP = 1.              ! Flux multiplicator. For testing
+!
+LWINDFILTER = .FALSE.         ! Fire wind filtering flag
+CWINDFILTER = 'EWAM'          ! Wind filter method (EWAM or WLIM)
+XEWAMTAU    = 20.             ! Time averaging constant for EWAM method (s)
+XWLIMUTH    = 8.              ! Thresehold wind value for WLIM method (m/s)
+XWLIMUTMAX  = 9.              ! Maximum wind value for WLIM method (m/s) (needs to be >= XWLIMUTH )
+!
+NNBSMOKETRACER = 1            ! Nb of smoke tracers
+!
+NWINDSLOPECPLMODE = 0         ! Flag for use of wind/slope in ROS (0 = wind + slope, 1 = wind only, 2 = slope only (U0=0))
+!
+!
+!
+!! DO NOT CHANGE BELOW PARAMETERS
+XFIREMESHSIZE(:) = 0.         ! Fire mesh size (dxf,dyf)
+LRESTA_ASE = .FALSE.          ! Flag for using ASE in RESTA file
+LRESTA_AWC = .FALSE.          ! Flag for using AWC in RESTA file
+LRESTA_EWAM = .FALSE.         ! Flag for using EWAM in RESTA file
+LRESTA_WLIM = .FALSE.         ! Flag for using WLIM in RESTA file
 
 !-------------------------------------------------------------------------------
 END SUBROUTINE DEFAULT_DESFM_n
diff --git a/src/mesonh/ext/ini_budget.f90 b/src/mesonh/ext/ini_budget.f90
index 3adfe547cbf88c5ead1fe6ee53eda13afb2dd607..bc66bd58749351a9fbec8e702134909d600f6089 100644
--- a/src/mesonh/ext/ini_budget.f90
+++ b/src/mesonh/ext/ini_budget.f90
@@ -228,7 +228,7 @@ use modd_dyn,           only: lcorio, xseglen
 use modd_dyn_n,         only: xtstep, locean
 use modd_elec_descr,    only: linductive, lrelax2fw_ion
 use modd_field,         only: TYPEREAL
-use modd_fire,          only: lblaze
+use modd_fire_n,        only: lblaze
 use modd_nsv,           only: nsv_aerbeg, nsv_aerend, nsv_aerdepbeg, nsv_aerdepend, nsv_c2r2beg, nsv_c2r2end,      &
                               nsv_chembeg, nsv_chemend, nsv_chicbeg, nsv_chicend, nsv_csbeg, nsv_csend,            &
                               nsv_dstbeg, nsv_dstend, nsv_dstdepbeg, nsv_dstdepend, nsv_elecbeg, nsv_elecend,      &
@@ -527,6 +527,7 @@ if ( lbu_rth .or. lbu_rtke .or. lbu_rrv .or. lbu_rrc .or. lbu_rrr .or. &
   tburhodj%xdata(:, :, :) = 0.
 end if
 
+
 tzsource%ntype    = TYPEREAL
 tzsource%ndims    = 3
 
diff --git a/src/mesonh/ext/ini_nsv.f90 b/src/mesonh/ext/ini_nsv.f90
index 3573e34ba187133e7b257c45e1af932de74f98c0..d1e5c5aaa2ccfd80acb3f95457177b15614e7890 100644
--- a/src/mesonh/ext/ini_nsv.f90
+++ b/src/mesonh/ext/ini_nsv.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2001-2022 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2001-2023 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.
@@ -102,7 +102,7 @@ USE MODD_DYN_n,           ONLY: LHORELAX_SVFF
 USE MODD_ELEC_DESCR,      ONLY: LLNOX_EXPLICIT
 USE MODD_ELEC_DESCR,      ONLY: CELECNAMES
 USE MODD_FIELD,           ONLY: TFIELDMETADATA, TYPEREAL
-USE MODD_FIRE
+USE MODD_FIRE_n
 #ifdef MNH_FOREFIRE
 USE MODD_FOREFIRE
 #endif
@@ -265,7 +265,7 @@ IF (CCLOUD == 'LIMA' ) THEN
       NSV_LIMA_IMM_NUCL_A(KMI) = ISV
       ISV = ISV + MAX(1,NMOD_IMM)
    END IF
-!
+
   IF ( NMOD_IFN > 0 ) THEN
     IF ( .NOT. ALLOCATED( NIMM ) ) ALLOCATE( NIMM(NMOD_CCN) )
     NIMM(:) = 0
@@ -758,43 +758,49 @@ IF ( LDUST ) THEN
   IF ( NMODE_DST < 1 .OR. NMODE_DST > 3 ) CALL Print_msg( NVERB_FATAL, 'GEN', 'INI_NSV', 'NMODE_DST must in the 1 to 3 interval' )
 
   ! Initialization of dust names
+  ! Was allocated for previous KMI
+  ! We assume that if LDUST=T on a model, NSV_DST_A(KMI) is the same for all
   IF( .NOT. ALLOCATED( CDUSTNAMES ) ) THEN
     ALLOCATE( CDUSTNAMES(NSV_DST_A(KMI)) )
-    ALLOCATE( YDUSTLONGNAMES(NSV_DST_A(KMI)) )
-    !Loop on all dust modes
-    IF ( INMOMENTS_DST == 1 ) THEN
-      DO JMODE = 1, NMODE_DST
-        IMODEIDX = JPDUSTORDER(JMODE)
-        JSV_NAME = ( IMODEIDX - 1 ) * 3 + 2
-        CDUSTNAMES(JMODE) = YPDUST_INI(JSV_NAME)
-        !Add meaning of the ppv unit (here for moment 3)
-        YDUSTLONGNAMES(JMODE) = TRIM( YPDUST_INI(JSV_NAME) ) // ' [molec_{aer}/molec_{air}]'
-      END DO
-    ELSE
-      DO JMODE = 1,NMODE_DST
-        !Find which mode we are dealing with
-        IMODEIDX = JPDUSTORDER(JMODE)
-        DO JMOM = 1, INMOMENTS_DST
-          !Find which number this is of the list of scalars
-          JSV = ( JMODE - 1 ) * INMOMENTS_DST + JMOM
-          !Find what name this corresponds to, always 3 moments assumed in YPDUST_INI
-          JSV_NAME = ( IMODEIDX - 1) * 3 + JMOM
-          !Get the right CDUSTNAMES which should follow the list of scalars transported in XSVM/XSVT
-          CDUSTNAMES(JSV) = YPDUST_INI(JSV_NAME)
-          !Add meaning of the ppv unit
-          IF ( JMOM == 1 ) THEN !Corresponds to moment 0
-            YDUSTLONGNAMES(JSV) = TRIM( YPDUST_INI(JSV_NAME) ) // ' [nb_aerosols/molec_{air}]'
-          ELSE IF ( JMOM == 2 ) THEN !Corresponds to moment 3
-            YDUSTLONGNAMES(JSV) = TRIM( YPDUST_INI(JSV_NAME) ) // ' [molec_{aer}/molec_{air}]'
-          ELSE IF ( JMOM == 3 ) THEN !Corresponds to moment 6
-            YDUSTLONGNAMES(JSV) = TRIM( YPDUST_INI(JSV_NAME) ) // ' [um6/molec_{air}*(cm3/m3)]'
-          ELSE
-            CALL Print_msg( NVERB_WARNING, 'GEN', 'INI_NSV', 'unknown moment for DUST' )
-            YDUSTLONGNAMES(JMODE) = TRIM( YPDUST_INI(JSV_NAME) )
-          END IF
-        ENDDO ! Loop on moments
-      ENDDO    ! Loop on dust modes
-    END IF
+  ELSE IF ( SIZE( CDUSTNAMES ) /= NSV_DST_A(KMI) ) THEN
+    CALL Print_msg( NVERB_ERROR, 'GEN', 'INI_NSV', 'NSV_DST not the same for different model (if LDUST=T)' )
+    DEALLOCATE( CDUSTNAMES )
+    ALLOCATE( CDUSTNAMES(NSV_DST_A(KMI)) )
+  END IF
+  ALLOCATE( YDUSTLONGNAMES(NSV_DST_A(KMI)) )
+  !Loop on all dust modes
+  IF ( INMOMENTS_DST == 1 ) THEN
+    DO JMODE = 1, NMODE_DST
+      IMODEIDX = JPDUSTORDER(JMODE)
+      JSV_NAME = ( IMODEIDX - 1 ) * 3 + 2
+      CDUSTNAMES(JMODE) = YPDUST_INI(JSV_NAME)
+      !Add meaning of the ppv unit (here for moment 3)
+      YDUSTLONGNAMES(JMODE) = TRIM( YPDUST_INI(JSV_NAME) ) // ' [molec_{aer}/molec_{air}]'
+    END DO
+  ELSE
+    DO JMODE = 1,NMODE_DST
+      !Find which mode we are dealing with
+      IMODEIDX = JPDUSTORDER(JMODE)
+      DO JMOM = 1, INMOMENTS_DST
+        !Find which number this is of the list of scalars
+        JSV = ( JMODE - 1 ) * INMOMENTS_DST + JMOM
+        !Find what name this corresponds to, always 3 moments assumed in YPDUST_INI
+        JSV_NAME = ( IMODEIDX - 1) * 3 + JMOM
+        !Get the right CDUSTNAMES which should follow the list of scalars transported in XSVM/XSVT
+        CDUSTNAMES(JSV) = YPDUST_INI(JSV_NAME)
+        !Add meaning of the ppv unit
+        IF ( JMOM == 1 ) THEN !Corresponds to moment 0
+          YDUSTLONGNAMES(JSV) = TRIM( YPDUST_INI(JSV_NAME) ) // ' [nb_aerosols/molec_{air}]'
+        ELSE IF ( JMOM == 2 ) THEN !Corresponds to moment 3
+          YDUSTLONGNAMES(JSV) = TRIM( YPDUST_INI(JSV_NAME) ) // ' [molec_{aer}/molec_{air}]'
+        ELSE IF ( JMOM == 3 ) THEN !Corresponds to moment 6
+          YDUSTLONGNAMES(JSV) = TRIM( YPDUST_INI(JSV_NAME) ) // ' [um6/molec_{air}*(cm3/m3)]'
+        ELSE
+          CALL Print_msg( NVERB_WARNING, 'GEN', 'INI_NSV', 'unknown moment for DUST' )
+          YDUSTLONGNAMES(JMODE) = TRIM( YPDUST_INI(JSV_NAME) )
+        END IF
+      ENDDO ! Loop on moments
+    ENDDO    ! Loop on dust modes
   END IF
 
   ! Initialization of deposition scheme names
@@ -814,44 +820,51 @@ END IF
 IF ( LSALT ) THEN
   IF ( NMODE_SLT < 1 .OR. NMODE_SLT > 8 ) CALL Print_msg( NVERB_FATAL, 'GEN', 'INI_NSV', 'NMODE_SLT must in the 1 to 8 interval' )
 
+  ! Was allocated for previous KMI
+  ! We assume that if LSALT=T on a model, NSV_SLT_A(KMI) is the same for all
   IF( .NOT. ALLOCATED( CSALTNAMES ) ) THEN
     ALLOCATE( CSALTNAMES(NSV_SLT_A(KMI)) )
-    ALLOCATE( YSALTLONGNAMES(NSV_DST_A(KMI)) )
-    !Loop on all dust modes
-    IF ( INMOMENTS_SLT == 1 ) THEN
-      DO JMODE = 1, NMODE_SLT
-        IMODEIDX = JPSALTORDER(JMODE)
-        JSV_NAME = ( IMODEIDX - 1 ) * 3 + 2
-        CSALTNAMES(JMODE) = YPSALT_INI(JSV_NAME)
-        !Add meaning of the ppv unit (here for moment 3)
-        YSALTLONGNAMES(JMODE) = TRIM( YPSALT_INI(JSV_NAME) ) // ' [molec_{aer}/molec_{air}]'
-      END DO
-    ELSE
-      DO JMODE = 1, NMODE_SLT
-        !Find which mode we are dealing with
-        IMODEIDX = JPSALTORDER(JMODE)
-        DO JMOM = 1, INMOMENTS_SLT
-          !Find which number this is of the list of scalars
-          JSV = ( JMODE - 1 ) * INMOMENTS_SLT + JMOM
-          !Find what name this corresponds to, always 3 moments assumed in YPSALT_INI
-          JSV_NAME = ( IMODEIDX - 1 ) * 3 + JMOM
-          !Get the right CSALTNAMES which should follow the list of scalars transported in XSVM/XSVT
-          CSALTNAMES(JSV) = YPSALT_INI(JSV_NAME)
-          !Add meaning of the ppv unit
-          IF ( JMOM == 1 ) THEN !Corresponds to moment 0
-            YSALTLONGNAMES(JSV) = TRIM( YPSALT_INI(JSV_NAME) ) // ' [nb_aerosols/molec_{air}]'
-          ELSE IF ( JMOM == 2 ) THEN !Corresponds to moment 3
-            YSALTLONGNAMES(JSV) = TRIM( YPSALT_INI(JSV_NAME) ) // ' [molec_{aer}/molec_{air}]'
-          ELSE IF ( JMOM == 3 ) THEN !Corresponds to moment 6
-            YSALTLONGNAMES(JSV) = TRIM( YPSALT_INI(JSV_NAME) ) // ' [um6/molec_{air}*(cm3/m3)]'
-          ELSE
-            CALL Print_msg( NVERB_WARNING, 'GEN', 'INI_NSV', 'unknown moment for SALT' )
-            YSALTLONGNAMES(JMODE) = TRIM( YPSALT_INI(JSV_NAME) )
-          END IF
-        ENDDO ! Loop on moments
-      ENDDO    ! Loop on dust modes
-    END IF
+  ELSE IF ( SIZE( CSALTNAMES ) /= NSV_SLT_A(KMI) ) THEN
+    CALL Print_msg( NVERB_ERROR, 'GEN', 'INI_NSV', 'NSV_SLT not the same for different model (if LSALT=T)' )
+    DEALLOCATE( CSALTNAMES )
+    ALLOCATE( CSALTNAMES(NSV_SLT_A(KMI)) )
   END IF
+  ALLOCATE( YSALTLONGNAMES(NSV_SLT_A(KMI)) )
+  !Loop on all dust modes
+  IF ( INMOMENTS_SLT == 1 ) THEN
+    DO JMODE = 1, NMODE_SLT
+      IMODEIDX = JPSALTORDER(JMODE)
+      JSV_NAME = ( IMODEIDX - 1 ) * 3 + 2
+      CSALTNAMES(JMODE) = YPSALT_INI(JSV_NAME)
+      !Add meaning of the ppv unit (here for moment 3)
+      YSALTLONGNAMES(JMODE) = TRIM( YPSALT_INI(JSV_NAME) ) // ' [molec_{aer}/molec_{air}]'
+    END DO
+  ELSE
+    DO JMODE = 1, NMODE_SLT
+      !Find which mode we are dealing with
+      IMODEIDX = JPSALTORDER(JMODE)
+      DO JMOM = 1, INMOMENTS_SLT
+        !Find which number this is of the list of scalars
+        JSV = ( JMODE - 1 ) * INMOMENTS_SLT + JMOM
+        !Find what name this corresponds to, always 3 moments assumed in YPSALT_INI
+        JSV_NAME = ( IMODEIDX - 1 ) * 3 + JMOM
+        !Get the right CSALTNAMES which should follow the list of scalars transported in XSVM/XSVT
+        CSALTNAMES(JSV) = YPSALT_INI(JSV_NAME)
+        !Add meaning of the ppv unit
+        IF ( JMOM == 1 ) THEN !Corresponds to moment 0
+          YSALTLONGNAMES(JSV) = TRIM( YPSALT_INI(JSV_NAME) ) // ' [nb_aerosols/molec_{air}]'
+        ELSE IF ( JMOM == 2 ) THEN !Corresponds to moment 3
+          YSALTLONGNAMES(JSV) = TRIM( YPSALT_INI(JSV_NAME) ) // ' [molec_{aer}/molec_{air}]'
+        ELSE IF ( JMOM == 3 ) THEN !Corresponds to moment 6
+          YSALTLONGNAMES(JSV) = TRIM( YPSALT_INI(JSV_NAME) ) // ' [um6/molec_{air}*(cm3/m3)]'
+        ELSE
+          CALL Print_msg( NVERB_WARNING, 'GEN', 'INI_NSV', 'unknown moment for SALT' )
+          YSALTLONGNAMES(JMODE) = TRIM( YPSALT_INI(JSV_NAME) )
+        END IF
+      ENDDO ! Loop on moments
+    ENDDO    ! Loop on dust modes
+  END IF
+
   ! Initialization of deposition scheme
   IF ( LDEPOS_SLT(KMI) ) THEN
     IF( .NOT. ALLOCATED( CDESLTNAMES ) ) THEN
@@ -1053,6 +1066,22 @@ DO JSV = NSV_FFBEG_A(KMI), NSV_FFEND_A(KMI)
 END DO
 #endif
 
+DO JSV = NSV_FIREBEG_A(KMI), NSV_FIREEND_A(KMI)
+  WRITE( YNUM3, '( I3.3 )' ) JSV-NSV_FIREBEG_A(KMI)+1
+
+  TSVLIST_A(JSV, KMI) = TFIELDMETADATA(      &
+    CMNHNAME   = 'SVFIRE' // YNUM3,          &
+    CSTDNAME   = '',                         &
+    CLONGNAME  = 'SVFIRE' // YNUM3,          &
+    CUNITS     = 'kg kg-1',                  &
+    CDIR       = 'XY',                       &
+    CCOMMENT   = 'X_Y_Z_' // 'SVT' // YNUM3, &
+    NGRID      = 1,                          &
+    NTYPE      = TYPEREAL,                   &
+    NDIMS      = 3,                          &
+    LTIMEDEP   = .TRUE.                      )
+END DO
+
 DO JSV = NSV_CSBEG_A(KMI), NSV_CSEND_A(KMI)
   WRITE( YNUM3, '( I3.3 )' ) JSV-NSV_CSBEG_A(KMI)
 
diff --git a/src/mesonh/ext/modeln.f90 b/src/mesonh/ext/modeln.f90
index 555b3cef2c31dbba4a3d3e383c3ba258813b5b46..b5ab334898edb2435108ee39274f9f58f0bd6ee0 100644
--- a/src/mesonh/ext/modeln.f90
+++ b/src/mesonh/ext/modeln.f90
@@ -466,7 +466,7 @@ USE MODI_WRITE_LFIFM_n
 USE MODI_WRITE_SERIES_n
 USE MODI_WRITE_SURF_ATM_N
 !
-USE MODD_FIRE
+USE MODD_FIRE_n
 IMPLICIT NONE
 !
 !*       0.1   declarations of arguments
diff --git a/src/mesonh/ext/read_exsegn.f90 b/src/mesonh/ext/read_exsegn.f90
index c036b6284dbf22f12927c5222fa9aed3f31121df..59d9b68d0284d1d6e9848b68ad7537b24c1f21ef 100644
--- a/src/mesonh/ext/read_exsegn.f90
+++ b/src/mesonh/ext/read_exsegn.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2022 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2023 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.
@@ -370,6 +370,7 @@ USE MODN_ELEC
 USE MODN_EOL
 USE MODN_EOL_ADNR
 USE MODN_EOL_ALM
+USE MODN_FIRE_n
 USE MODN_FLYERS
 #ifdef MNH_FOREFIRE
 USE MODN_FOREFIRE
@@ -410,8 +411,6 @@ USE MODN_TURB
 USE MODN_TURB_CLOUD
 USE MODN_TURB_n
 USE MODN_VISCOSITY
-USE MODD_FIRE
-USE MODN_FIRE
 !
 IMPLICIT NONE
 !
@@ -512,6 +511,7 @@ CALL INIT_NAM_SERIESN
 CALL INIT_NAM_BLOWSNOWN
 CALL INIT_NAM_PROFILERn
 CALL INIT_NAM_STATIONn
+CALL INIT_NAM_FIREn
 !
 WRITE(UNIT=ILUOUT,FMT="(/,'READING THE EXSEG.NAM FILE')")
 CALL POSNAM(ILUSEG,'NAM_LUNITN',GFOUND,ILUOUT)
@@ -570,6 +570,8 @@ CALL POSNAM(ILUSEG,'NAM_PROFILERN',GFOUND,ILUOUT)
 IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_PROFILERn)
 CALL POSNAM(ILUSEG,'NAM_STATIONN',GFOUND,ILUOUT)
 IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_STATIONn)
+CALL POSNAM(ILUSEG,'NAM_FIREN',GFOUND,ILUOUT)
+IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_FIREn)
 !
 IF (KMI == 1) THEN                                               
   WRITE(UNIT=ILUOUT,FMT="(' namelists common to all the models ')")
@@ -852,8 +854,6 @@ IF (KMI == 1) THEN
   IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_2D_FRC)
   CALL POSNAM(ILUSEG,'NAM_LATZ_EDFLX',GFOUND)
   IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_LATZ_EDFLX)
-  CALL POSNAM(ILUSEG,'NAM_FIRE',GFOUND,ILUOUT)
-  IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_FIRE)
   CALL POSNAM(ILUSEG,'NAM_BLOWSNOW',GFOUND,ILUOUT)
   IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_BLOWSNOW)
   CALL POSNAM(ILUSEG,'NAM_VISC',GFOUND,ILUOUT)
@@ -962,6 +962,7 @@ IF( CCLOUD == 'LIMA' ) THEN
                                                 'GRAU','HAIL')
 END IF
 ! Blaze
+CALL UPDATE_NAM_FIREn
 IF (LBLAZE) THEN
   CALL TEST_NAM_VAR(ILUOUT,'CPROPAG_MODEL',CPROPAG_MODEL,'SANTONI2011')
   CALL TEST_NAM_VAR(ILUOUT,'CHEAT_FLUX_MODEL',CHEAT_FLUX_MODEL,'CST','EXP','EXS')
@@ -969,6 +970,7 @@ IF (LBLAZE) THEN
   CALL TEST_NAM_VAR(ILUOUT,'CFIRE_CPL_MODE',CFIRE_CPL_MODE,'2WAYCPL','FIR2ATM','ATM2FIR')
   CALL TEST_NAM_VAR(ILUOUT,'CWINDFILTER',CWINDFILTER,'EWAM','WLIM')
 END IF
+!
 IF(LBLOWSNOW) THEN
        CALL TEST_NAM_VAR(ILUOUT,'CSNOWSEDIM',CSNOWSEDIM,'NONE','MITC','CARR','TABC')
        IF (XALPHA_SNOW .NE. 3 .AND. CSNOWSEDIM=='TABC') THEN
@@ -3040,6 +3042,7 @@ CALL UPDATE_NAM_SERIESN
 CALL UPDATE_NAM_BLOWSNOWN
 CALL UPDATE_NAM_PROFILERn
 CALL UPDATE_NAM_STATIONn
+CALL UPDATE_NAM_FIREn
 !-------------------------------------------------------------------------------
 WRITE(UNIT=ILUOUT,FMT='(/)')
 !-------------------------------------------------------------------------------