diff --git a/build/with_fcm/arch/arch-MIMPIIFC1805.EPONA.SNG.env b/build/with_fcm/arch/arch-MIMPIIFC1805.EPONA.SNG.env
new file mode 100644
index 0000000000000000000000000000000000000000..8fdefeb29c0d0d32e56cf398c1174231fb3729dd
--- /dev/null
+++ b/build/with_fcm/arch/arch-MIMPIIFC1805.EPONA.SNG.env
@@ -0,0 +1 @@
+module load perl/5.30.3
diff --git a/build/with_fcm/arch/arch-MIMPIIFC1805.EPONA.SNG.fcm b/build/with_fcm/arch/arch-MIMPIIFC1805.EPONA.SNG.fcm
new file mode 100644
index 0000000000000000000000000000000000000000..99a9ef109ec7e56adfec3be75e4bb3c42d634c78
--- /dev/null
+++ b/build/with_fcm/arch/arch-MIMPIIFC1805.EPONA.SNG.fcm
@@ -0,0 +1,25 @@
+# Compilation
+$FCOMPILER     =      /home/gmap/mrpm/khatib/public/bin/mimpifc-18.0.5.274
+$BASE_FFLAGS   =      -c -convert big_endian -assume byterecl -align array64byte,all -traceback -fpic -qopenmp -qopenmp-threadprivate compat -fp-model source -qopt-report=5 -qopt-report-phase=vec -ftz -diag-disable=remark,cpu-dispatch
+$PROD_FFLAGS   =      -g -O2 -march=core-avx2 -finline-functions -finline-limit=500 -Winline -qopt-prefetch=4 -fast-transcendentals -fimf-use-svml -no-fma
+$DEV_FFLAGS    =      -g -O0
+$DEBUG_FFLAGS  =      -g -O0  -check bounds  -init=arrays,snan -fp-stack-check -ftrapuv -fpe0 -fp-speculation=strict -check uninit -check pointers
+$CCOMPILER     =      /home/gmap/mrpm/khatib/public/bin/mimpicc-18.0.5.274
+$BASE_CFLAGS   =      -c -qopenmp -qopt-report=2 -qopt-report-phase=vec -fpic -malign-double -ftz -fp-model precise -diag-disable=remark,cpu-dispatch
+$PROD_CFLAGS   =      -g -O2 -march=core-avx2
+$DEV_CFLAGS    =     
+$DEBUG_CFLAGS  =     
+$OMP_FFLAGS    =
+
+# Preprocessor
+$FPP_FLAGS     =      LINUX LITTLE_ENDIAN LITTLE ADDRESS64 GRIB_API_1 REPRO48 PARKIND1_SINGLE
+$CPP_FLAGS     =      LINUX LITTLE_ENDIAN LITTLE GRIB_API_1 PARKIND1_SINGLE
+
+# Linker
+$LINK          =      /home/gmap/mrpm/khatib/public/bin/mimpifc-18.0.5.274
+$BASE_LD       =      -v -fp-stack-check -qopenmp -qopenmp-threadprivate compat -shared-intel -lrt -lstdc++
+$OMP_LD        =
+$LD_EXE_TO_SHARED =  -shared 
+
+# Other
+$AR            =      /usr/bin/ar 
diff --git a/build/with_fcm/arch/arch-MPIGFORTRAN920SNG.GMAP.env b/build/with_fcm/arch/arch-MPIGFORTRAN920SNG.GMAP.env
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/build/with_fcm/arch/arch-MPIGFORTRAN920SNG.GMAP.fcm b/build/with_fcm/arch/arch-MPIGFORTRAN920SNG.GMAP.fcm
new file mode 100644
index 0000000000000000000000000000000000000000..561a854321ab13c7fb0993f4367fe6252bc95653
--- /dev/null
+++ b/build/with_fcm/arch/arch-MPIGFORTRAN920SNG.GMAP.fcm
@@ -0,0 +1,25 @@
+# Compilation
+$FCOMPILER     =      mpigfortran.9.2.0 
+$BASE_FFLAGS   =      -c -fconvert=swap -fno-second-underscore -fbacktrace -m64 -fopenmp -ffree-line-length-none -fno-sign-zero -fpic -fno-range-check -g -pipe
+$PROD_FFLAGS   =      -g -O2
+$DEV_FFLAGS    =      -g -O0
+$DEBUG_FFLAGS  =      -g -O0  -fbounds-check  -finit-real=snan -ffpe-trap=invalid,zero,overflow
+$CCOMPILER     =      mpigcc.9.2.0
+$BASE_CFLAGS   =      -c -m64 -fopenmp -fpic -g -pipe
+$PROD_CFLAGS   =      -g -O2
+$DEV_CFLAGS    =     
+$DEBUG_CFLAGS  =     
+$OMP_FFLAGS    =
+
+# Preprocessor
+$FPP_FLAGS     =      LINUX LITTLE_ENDIAN LITTLE REPRO48 PARKIND1_SINGLE
+$CPP_FLAGS     =      LINUX LITTLE_ENDIAN LITTLE PARKIND1_SINGLE
+
+# Linker
+$LINK          =      mpigfortran.9.2.0
+$BASE_LD       =      -fopenmp -ffast-math -ldl -lrt
+$OMP_LD        =
+$LD_EXE_TO_SHARED =  -shared
+
+# Other
+$AR            =      ar 
diff --git a/src/common/micro/mode_ice4_stepping.F90 b/src/common/micro/mode_ice4_stepping.F90
index bef9482912011abfdadf6af62327a6c3395c891d..a2b9e46c990826a4b141766f9a782091da51a7ba 100644
--- a/src/common/micro/mode_ice4_stepping.F90
+++ b/src/common/micro/mode_ice4_stepping.F90
@@ -312,6 +312,7 @@ DO WHILE(ANY(ZTIME(1:KMICRO)<PTSTEP)) ! Loop to *really* compute tendencies
       DO JL=1, KMICRO
         IF (ZA(JL, JV) < -1.E-20 .AND. PVART(JL, JV) > ICED%XRTMIN(JV)) THEN
           ZMAXTIME(JL)=MIN(ZMAXTIME(JL), -(ZB(JL, JV)+PVART(JL, JV))/ZA(JL, JV))
+          ZMAXTIME(JL)=MAX(ZMAXTIME(JL), CST%XMNH_TINY) !to prevent rounding errors
         ENDIF
       ENDDO
     ENDDO
diff --git a/src/testprogs/ice_adjust/main_ice_adjust.F90 b/src/testprogs/ice_adjust/main_ice_adjust.F90
index a9a655ef39d6bd896e3d9d0bac35a3ca2987499c..77b85dac38ad15c9232786e0581fa61edadccfb6 100644
--- a/src/testprogs/ice_adjust/main_ice_adjust.F90
+++ b/src/testprogs/ice_adjust/main_ice_adjust.F90
@@ -8,8 +8,7 @@ USE MODD_DIMPHYEX,   ONLY: DIMPHYEX_t
 USE MODD_PHYEX,      ONLY: PHYEX_t
 USE STACK_MOD
 USE OMP_LIB
-USE YOMHOOK, ONLY : LHOOK, DR_HOOK
-USE PARKIND1, ONLY : JPRB, JPIM
+USE YOMHOOK, ONLY : LHOOK, DR_HOOK, JPHOOK
 
 IMPLICIT NONE
 
@@ -73,7 +72,7 @@ REAL(KIND=8) :: TSC, TEC, TSD, TED, ZTC, ZTD
 INTEGER :: ITIME, NTIME
 INTEGER :: IRANK, ISIZE
 LOGICAL :: LLVERBOSE, LLSTAT, LLBIND
-REAL (KIND=JPRB) :: ZHOOK_HANDLE
+REAL (KIND=JPHOOK) :: ZHOOK_HANDLE
 
 CALL INITOPTIONS ()
 NGPBLKS = 296
diff --git a/src/testprogs/rain_ice/main_rain_ice.F90 b/src/testprogs/rain_ice/main_rain_ice.F90
index d2f53a2727643d60f91a8455ff395449fcdf28be..4a60553414281b5806ddadb10259b3900c629eb1 100644
--- a/src/testprogs/rain_ice/main_rain_ice.F90
+++ b/src/testprogs/rain_ice/main_rain_ice.F90
@@ -8,8 +8,7 @@ USE MODD_DIMPHYEX,   ONLY: DIMPHYEX_t
 USE MODD_PHYEX,      ONLY: PHYEX_t
 USE STACK_MOD
 USE OMP_LIB
-USE YOMHOOK, ONLY : LHOOK, DR_HOOK
-USE PARKIND1, ONLY : JPRB, JPIM
+USE YOMHOOK, ONLY : LHOOK, DR_HOOK, JPHOOK
 
 IMPLICIT NONE
 
@@ -67,7 +66,7 @@ REAL(KIND=8) :: TSC, TEC, TSD, TED, ZTC, ZTD
 INTEGER :: ITIME, NTIME
 INTEGER :: IRANK, ISIZE
 LOGICAL :: LLVERBOSE, LLSTAT, LLBIND
-REAL (KIND=JPRB) :: ZHOOK_HANDLE
+REAL (KIND=JPHOOK) :: ZHOOK_HANDLE
 CHARACTER(LEN=32) :: CLTEXT
 
 CALL INITOPTIONS ()
diff --git a/src/testprogs/rain_ice_old/main_rain_ice_old.F90 b/src/testprogs/rain_ice_old/main_rain_ice_old.F90
index 8de4c7cea04b98dc28ec7588e6e54420cd85d49c..55dc41c639460b2c05d8222bf9ad15f3bc0b4391 100644
--- a/src/testprogs/rain_ice_old/main_rain_ice_old.F90
+++ b/src/testprogs/rain_ice_old/main_rain_ice_old.F90
@@ -5,8 +5,7 @@ program main_rain_ice_old
 
   use modi_rain_ice_old
 
-  use yomhook, only: lhook, dr_hook
-  use parkind1, only: jprb, jpim
+  use yomhook, only: lhook, dr_hook, jphook
 
   use modd_dimphyex, only: dimphyex_t
   use modd_cst, only: cst
@@ -84,6 +83,8 @@ program main_rain_ice_old
 
   integer :: i, j, jrr
 
+  real(kind=jphook) :: zhook_handle
+
   real(8) :: time_start_real, time_end_real
   real(8) :: time_start_cpu, time_end_cpu
 
@@ -235,6 +236,8 @@ ENDDO
   call system_clock(count=counter, count_rate=c_rate)
   time_start_real = real(counter,8)/c_rate
 
+  if(lhook) call dr_hook ('MAIN',0,zhook_handle)
+
   do i = 1, n_gp_blocks
 
     isize = count(llmicro(:,:,i))
@@ -272,6 +275,8 @@ ENDDO
 
   enddo
 
+  if(lhook) call dr_hook ('MAIN',1,zhook_handle)
+
   call cpu_time(time_end_cpu)
   call system_clock(count=counter, count_rate=c_rate)
   time_end_real = real(counter,8)/c_rate
diff --git a/src/testprogs/shallow/main_shallow.F90 b/src/testprogs/shallow/main_shallow.F90
index f9b313141e5f47b349d83808a73331e627d373fd..4273072ef361cb3b8579fa9c5f0343c9ce76b9bd 100644
--- a/src/testprogs/shallow/main_shallow.F90
+++ b/src/testprogs/shallow/main_shallow.F90
@@ -8,8 +8,7 @@ USE MODD_DIMPHYEX,   ONLY: DIMPHYEX_t
 USE MODD_PHYEX,      ONLY: PHYEX_t
 USE STACK_MOD
 USE OMP_LIB
-USE YOMHOOK, ONLY : LHOOK, DR_HOOK
-USE PARKIND1, ONLY : JPRB, JPIM
+USE YOMHOOK, ONLY : LHOOK, DR_HOOK, JPHOOK
 
 IMPLICIT NONE
 
@@ -119,7 +118,7 @@ REAL(KIND=8) :: TSC, TEC, TSD, TED, ZTC, ZTD
 INTEGER :: ITIME, NTIME
 INTEGER :: IRANK, ISIZE
 LOGICAL :: LLVERBOSE, LLSTAT, LLBIND
-REAL (KIND=JPRB) :: ZHOOK_HANDLE
+REAL (KIND=JPHOOK) :: ZHOOK_HANDLE
 CHARACTER(LEN=32) :: CLTEXT
 
 CALL INITOPTIONS ()
diff --git a/src/testprogs/turb_mnh/main_turb.F90 b/src/testprogs/turb_mnh/main_turb.F90
index 4dfdf8725cd9a370fbd1f7dd2c3c7cacfccbfcbc..423b7b4199c87e0ee3d1cb2f0c8ece8e6c440290 100644
--- a/src/testprogs/turb_mnh/main_turb.F90
+++ b/src/testprogs/turb_mnh/main_turb.F90
@@ -8,8 +8,7 @@ USE MODD_DIMPHYEX,   ONLY: DIMPHYEX_t
 USE MODD_PHYEX,      ONLY: PHYEX_t
 USE STACK_MOD
 USE OMP_LIB
-USE YOMHOOK, ONLY : LHOOK, DR_HOOK
-USE PARKIND1, ONLY : JPRB, JPIM
+USE YOMHOOK, ONLY : LHOOK, DR_HOOK, JPHOOK
 USE MODD_LES,        ONLY: TLES_t
 
 IMPLICIT NONE
@@ -131,7 +130,7 @@ REAL(KIND=8) :: TSC, TEC, TSD, TED, ZTC, ZTD
 INTEGER :: ITIME, NTIME
 INTEGER :: IRANK, ISIZE
 LOGICAL :: LLVERBOSE, LLSTAT, LLBIND
-REAL (KIND=JPRB) :: ZHOOK_HANDLE
+REAL (KIND=JPHOOK) :: ZHOOK_HANDLE
 CHARACTER(LEN=32) :: CLTEXT
 
 CALL INITOPTIONS ()