diff --git a/src/MNH/mode_mnh_timing.f90 b/src/MNH/mode_mnh_timing.f90
index 23c09916f99873b55b4e47dba0c2a45538611ad8..8e5d22de008da8a71dd69d319979362ed90506ac 100644
--- a/src/MNH/mode_mnh_timing.f90
+++ b/src/MNH/mode_mnh_timing.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2024 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.
@@ -13,6 +13,7 @@ MODULE MODE_MNH_TIMING
 !  P. Wautelet 22/03/2019: use MNHREAL64 and MNHREAL64_MPI + typo corrections
 !  P. Wautelet 27/03/2019: use MNHTIME and MNHTIME_MPI instead of MNHREAL64 and MNHREAL64_MPI
 !  P. Wautelet 28/03/2019: use TFILE instead of unit number for set_iluout_timing
+!  P. Wautelet 23/09/2024: improve slightly TIME_STAT_ll
 !------------------------------------------------------------------------
 
 implicit none
@@ -92,7 +93,7 @@ end subroutine set_iluout_timing
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
 !     ########################################
-      SUBROUTINE TIME_STAT_ll(PRES, PSUM, HPRINT, HSEP,HFULL)
+      SUBROUTINE TIME_STAT_ll(PRES, PSUM, HPRINT, HSEP, OFULL)
 !     ########################################
 !
 !*       0.    DECLARATIONS
@@ -109,13 +110,13 @@ end subroutine set_iluout_timing
   REAL(kind=MNHTIME), DIMENSION(:), INTENT(INOUT) :: PSUM ! (1)=SUM(CPU) & (2)=SUM(ELAPSED) Timing
   CHARACTER(len=*), OPTIONAL,       INTENT(IN)    :: HPRINT
   CHARACTER       , OPTIONAL,       INTENT(IN)    :: HSEP
-  CHARACTER(len=*), OPTIONAL,       INTENT(IN)    :: HFULL
+  LOGICAL,          OPTIONAL,       INTENT(IN)    :: OFULL !To write detailed stats on file
 !
 !*       0.2   Declarations of local variables :
 !
   INTEGER,PARAMETER         :: NSTAT=5
 
-  INTEGER                   :: INFO,IROOT,JP
+  INTEGER                   :: INFO, JP
   CHARACTER(len=30)         :: VIDE = ""
   CHARACTER(len=30)         :: FILE = ""
   INTEGER                   :: IC
@@ -124,23 +125,27 @@ end subroutine set_iluout_timing
   REAL(kind=MNHTIME), DIMENSION(2,NPROC) :: ZSTAT_ALL
   INTEGER, DIMENSION(NPROC) :: IND
   INTEGER :: ILU
+  LOGICAL :: GFULL
 !
 !-------------------------------------------------------------------------------
+  IF ( PRESENT( OFULL) ) THEN
+    GFULL = OFULL
+  ELSE
+    GFULL = .FALSE.
+  END IF
 !
-!*       1. CALL THE MPI_ALLREDUCE ROUTINE
+!*       1. CALL THE MPI_ALLGATHER ROUTINE
 !           ------------------------------
-INFO = -1
-! 1.1 Sum(Proc)
-  CALL MPI_ALLREDUCE(PRES, ZSTAT(:,1), 2, MNHTIME_MPI, &
-                     MPI_SUM, NMNH_COMM_WORLD, INFO)
-! 1.2 Sum/Proc
+  CALL MPI_ALLGATHER( PRES(:), 2, MNHTIME_MPI, ZSTAT_ALL(:,:), 2, MNHTIME_MPI, NMNH_COMM_WORLD, INFO )
+
+  ! 1.1 Sum(Proc)
+  ZSTAT(:,1) = SUM( ZSTAT_ALL(:,:), DIM=2 )
+  ! 1.2 Sum/Proc
   ZSTAT(:,2) = ZSTAT(:,1 ) / NPROC
-! 1.3 Min(Proc)
-  CALL MPI_ALLREDUCE(PRES, ZSTAT(:,3), 2, MNHTIME_MPI, &
-                     MPI_MIN, NMNH_COMM_WORLD, INFO)
+  ! 1.3 Min(Proc)
+  ZSTAT(:,3) = MINVAL( ZSTAT_ALL(:,:), DIM=2 )
 ! 1.4 Max(Proc)
-  CALL MPI_ALLREDUCE(PRES, ZSTAT(:,4), 2, MNHTIME_MPI, &
-                     MPI_MAX, NMNH_COMM_WORLD, INFO)
+  ZSTAT(:,4) = MAXVAL( ZSTAT_ALL(:,:), DIM=2 )
 
 
   IF (.NOT.PRESENT(HPRINT)) THEN
@@ -162,12 +167,8 @@ INFO = -1
    WRITE(NLUOUT_TIMING,FMT= "('|',A29,'| CPUTIME ||',F15.3,'|',4(F10.3,'|'),F7.3,'|')" ) HPRINT//VIDE,ZSTAT(1,:)
    WRITE(NLUOUT_TIMING,FMT= "('|',A29,'| ELAPSED ||',F15.3,'|',4(F10.3,'|'),F7.3,'|')" ) HPRINT//VIDE,ZSTAT(2,:)
 
-   IF (PRESENT(HFULL)) THEN
-      ! gather all data
+   IF ( GFULL ) THEN
       !CALL  TIMING_SEPARATOR(HSEP)
-      IROOT = 0
-      CALL MPI_GATHER(PRES(:),2,MNHTIME_MPI,ZSTAT_ALL(:,1),2,MNHTIME_MPI,&
-           IROOT,NMNH_COMM_WORLD, INFO)
       IF (IP.EQ.1) THEN
          FILE = trim(adjustl(HPRINT))
          DO IC=1,LEN_trim(FILE)
diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90
index a438833a6c019fb5577c25994b7655d21c0db34b..7c7b289d9fa9a70d7b8b96d7c1578376d0693b8a 100644
--- a/src/MNH/modeln.f90
+++ b/src/MNH/modeln.f90
@@ -484,6 +484,8 @@ LOGICAL,                  INTENT(INOUT) :: OEXIT      ! Switch for the end of th
 !
 !*       0.2   declarations of local variables
 !
+LOGICAL, PARAMETER :: GFULLSTAT_PRESS_SLV = .TRUE. ! To write detailed stats of pressure solver in files
+!
 INTEGER :: ILUOUT      ! Logical unit number for the output listing
 INTEGER :: IIU,IJU,IKU ! array size in first, second and third dimensions
 INTEGER :: IIB,IIE,IJB,IJE ! index values for the physical subdomain
@@ -2420,16 +2422,16 @@ IF (OEXIT) THEN
   !
   CALL  TIMING_LEGEND()
   ! 
-  CALL TIME_STAT_ll(XT_PRESS,ZTOT,      ' PRESSURE ','=','F')
+  CALL TIME_STAT_ll( XT_PRESS, ZTOT,      ' PRESSURE ', '=', GFULLSTAT_PRESS_SLV )
   !JUAN Z_SPLITTING
-    CALL TIME_STAT_ll(TIMEZ%T_MAP_B_SX_YP2_ZP1,ZTOT,          '   REMAP       B=>FFTXZ'  ,'-','F')
-    CALL TIME_STAT_ll(TIMEZ%T_MAP_SX_YP2_ZP1_SXP2_Y_ZP1,ZTOT, '   REMAP   FFTXZ=>FFTYZ'  ,'-','F')
-    CALL TIME_STAT_ll(TIMEZ%T_MAP_SXP2_Y_ZP1_B,ZTOT,          '   REMAP   FTTYZ=>B'      ,'-','F')
-    CALL TIME_STAT_ll(TIMEZ%T_MAP_SXP2_Y_ZP1_SXP2_YP1_Z,ZTOT, '   REMAP   FFTYZ=>SUBZ'   ,'-','F')
-    CALL TIME_STAT_ll(TIMEZ%T_MAP_B_SXP2_Y_ZP1,ZTOT,          '   REMAP       B=>FFTYZ-1','-','F')
-    CALL TIME_STAT_ll(TIMEZ%T_MAP_SXP2_YP1_Z_SXP2_Y_ZP1,ZTOT, '   REMAP    SUBZ=>FFTYZ-1','-','F')
-    CALL TIME_STAT_ll(TIMEZ%T_MAP_SXP2_Y_ZP1_SX_YP2_ZP1,ZTOT, '   REMAP FFTYZ-1=>FFTXZ-1','-','F')
-    CALL TIME_STAT_ll(TIMEZ%T_MAP_SX_YP2_ZP1_B,ZTOT,          '   REMAP FFTXZ-1=>B     ' ,'-','F')
+    CALL TIME_STAT_ll( TIMEZ%T_MAP_B_SX_YP2_ZP1,          ZTOT, '   REMAP       B=>FFTXZ'  , '-', GFULLSTAT_PRESS_SLV )
+    CALL TIME_STAT_ll( TIMEZ%T_MAP_SX_YP2_ZP1_SXP2_Y_ZP1, ZTOT, '   REMAP   FFTXZ=>FFTYZ'  , '-', GFULLSTAT_PRESS_SLV )
+    CALL TIME_STAT_ll( TIMEZ%T_MAP_SXP2_Y_ZP1_B,          ZTOT, '   REMAP   FTTYZ=>B'      , '-', GFULLSTAT_PRESS_SLV )
+    CALL TIME_STAT_ll( TIMEZ%T_MAP_SXP2_Y_ZP1_SXP2_YP1_Z, ZTOT, '   REMAP   FFTYZ=>SUBZ'   , '-', GFULLSTAT_PRESS_SLV )
+    CALL TIME_STAT_ll( TIMEZ%T_MAP_B_SXP2_Y_ZP1,          ZTOT, '   REMAP       B=>FFTYZ-1', '-', GFULLSTAT_PRESS_SLV )
+    CALL TIME_STAT_ll( TIMEZ%T_MAP_SXP2_YP1_Z_SXP2_Y_ZP1, ZTOT, '   REMAP    SUBZ=>FFTYZ-1', '-', GFULLSTAT_PRESS_SLV )
+    CALL TIME_STAT_ll( TIMEZ%T_MAP_SXP2_Y_ZP1_SX_YP2_ZP1, ZTOT, '   REMAP FFTYZ-1=>FFTXZ-1', '-', GFULLSTAT_PRESS_SLV )
+    CALL TIME_STAT_ll( TIMEZ%T_MAP_SX_YP2_ZP1_B,          ZTOT, '   REMAP FFTXZ-1=>B     ' , '-', GFULLSTAT_PRESS_SLV )
   ! JUAN P1/P2
   CALL TIME_STAT_ll(XT_CLOUD,ZTOT,      ' RESOLVED_CLOUD','=')
   CALL TIME_STAT_ll(XT_ELEC,ZTOT,      ' RESOLVED_ELEC','=')