diff --git a/src/MNH/statprof_tools.f90 b/src/MNH/statprof_tools.f90
index af3bc1eb87a956fbe623abe584000e150197cefe..0d1de4a1616acc850cbc6d264e7ce3fbcb78e9f8 100644
--- a/src/MNH/statprof_tools.f90
+++ b/src/MNH/statprof_tools.f90
@@ -9,6 +9,7 @@
 !-----------------------------------------------------------------
 ! Modifications:
 !  P. Wautelet 30/09/2022: bugfix: use XUNDEF from SURFEX for surface variables computed by SURFEX
+!  P. Wautelet 25/11/2022: rewrite STATPROF_INSTANT algorithm (does not depends on model timestep anymore => independent of model)
 !-----------------------------------------------------------------
 !      ###################
 MODULE MODE_STATPROF_TOOLS
@@ -729,10 +730,9 @@ END FUNCTION STATPROF_INTERP_3D_V
 ! #################################################
 SUBROUTINE STATPROF_INSTANT( TPSTATPROF_TIME, KIN )
 ! #################################################
-  USE MODD_DYN_n,      ONLY: XTSTEP
-  USE MODD_PARAMETERS, ONLY: XUNDEF
   USE MODD_TIME_n,     ONLY: TDTCUR
 
+  USE MODE_DATETIME
   USE MODE_MSG
 
   IMPLICIT NONE
@@ -740,24 +740,26 @@ SUBROUTINE STATPROF_INSTANT( TPSTATPROF_TIME, KIN )
   TYPE(TSTATPROFTIME), INTENT(INOUT) :: TPSTATPROF_TIME
   INTEGER,             INTENT(OUT)   :: KIN ! Current step of storage
 
-  IF ( TPSTATPROF_TIME%XTIME_CUR == XUNDEF ) TPSTATPROF_TIME%XTIME_CUR = TPSTATPROF_TIME%XTSTEP - XTSTEP
-
-  TPSTATPROF_TIME%XTIME_CUR = TPSTATPROF_TIME%XTIME_CUR + XTSTEP
-
-  IF ( TPSTATPROF_TIME%XTIME_CUR >= TPSTATPROF_TIME%XTSTEP - 1.E-10 ) THEN
-    TPSTATPROF_TIME%XTIME_CUR = TPSTATPROF_TIME%XTIME_CUR - TPSTATPROF_TIME%XTSTEP
-    TPSTATPROF_TIME%N_CUR = TPSTATPROF_TIME%N_CUR + 1
-    KIN = TPSTATPROF_TIME%N_CUR
+  IF ( TPSTATPROF_TIME%N_CUR == 0 ) THEN
+    ! First store
+    TPSTATPROF_TIME%N_CUR = 1
+    TPSTATPROF_TIME%TPDATES(1) = TDTCUR
+    KIN = 1
+  ELSE
+    IF ( TDTCUR - TPSTATPROF_TIME%TPDATES(TPSTATPROF_TIME%N_CUR) >= TPSTATPROF_TIME%XTSTEP - 1.E-6 ) THEN
+      TPSTATPROF_TIME%N_CUR = TPSTATPROF_TIME%N_CUR + 1
+      KIN = TPSTATPROF_TIME%N_CUR
 
-    IF ( KIN < 1 .OR. KIN > SIZE( TPSTATPROF_TIME%TPDATES ) ) THEN
-      CALL PRINT_MSG( NVERB_ERROR, 'GEN', 'STATPROF_INSTANT', 'problem with step of storage' )
-      KIN = -2
+      IF ( KIN < 1 .OR. KIN > SIZE( TPSTATPROF_TIME%TPDATES ) ) THEN
+        CALL PRINT_MSG( NVERB_ERROR, 'GEN', 'STATPROF_INSTANT', 'problem with step of storage' )
+        KIN = -2
+      ELSE
+        TPSTATPROF_TIME%TPDATES(KIN) = TDTCUR
+      END IF
     ELSE
-      TPSTATPROF_TIME%TPDATES(KIN) = TDTCUR
+      ! Return an invalid step number
+      KIN = -1
     END IF
-  ELSE
-    ! Return an invalid step number
-    KIN = -1
   END IF
 
 END SUBROUTINE STATPROF_INSTANT