diff --git a/src/TOP/AGE/trcsms_age.F90 b/src/TOP/AGE/trcsms_age.F90
index a8283edf6df534771cbac7aaa40fa40946b6f4e1..8e793d23ce463e05bcf721d18aabff3fb2ac7e57 100644
--- a/src/TOP/AGE/trcsms_age.F90
+++ b/src/TOP/AGE/trcsms_age.F90
@@ -56,13 +56,7 @@ CONTAINS
          IF(lwp) WRITE(numout,*) ' trc_sms_age:  AGE model'
          IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~'
       ENDIF
-
-#if ! defined key_RK3
-      IF( l_1st_euler .OR. ln_top_euler ) THEN
-         tr(:,:,:,jp_age,Kbb) = tr(:,:,:,jp_age,Kmm)
-      ENDIF
-#endif
-
+      !
       DO jk = 1, nla_age
          tr(:,:,jk,jp_age,Krhs) = rn_age_kill_rate * tr(:,:,jk,jp_age,Kbb)
       END DO
diff --git a/src/TOP/PISCES/P4Z/p4zsms.F90 b/src/TOP/PISCES/P4Z/p4zsms.F90
index 664d1206425e423a46c6d4909bea415b14e8ffdd..32a3c6fbac65ca672e5782a096564e4f45633bd3 100644
--- a/src/TOP/PISCES/P4Z/p4zsms.F90
+++ b/src/TOP/PISCES/P4Z/p4zsms.F90
@@ -104,13 +104,7 @@ CONTAINS
          IF(lwp) write(numout,*) '    PISCES  Biology time step    rfact2 = ', rfact2
          IF(lwp) WRITE(numout,*)
       ENDIF
-
-      IF( l_1st_euler .OR. ln_top_euler ) THEN
-         DO jn = jp_pcs0, jp_pcs1              !   SMS on tracer without Asselin time-filter
-            tr(:,:,:,jn,Kbb) = tr(:,:,:,jn,Kmm)
-         END DO
-      ENDIF
-
+      !
       DO jn = jp_pcs0, jp_pcs1              !   Store the tracer concentrations before entering PISCES
          ztrbbio(:,:,:,jn) = tr(:,:,:,jn,Kbb)
       END DO
diff --git a/src/TOP/trcrst.F90 b/src/TOP/trcrst.F90
index 78ff2bbc411c69ef4c6d0a2876f46de2579ad9fe..fc54fc094b455905ece01288715c9519717f53fc 100644
--- a/src/TOP/trcrst.F90
+++ b/src/TOP/trcrst.F90
@@ -130,14 +130,23 @@ CONTAINS
       IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~'
 
       ! READ prognostic variables and computes diagnostic variable
-#if ! defined key_RK3
+#if defined key_RK3
+      DO jn = 1, jptra      ! RK3: Before time step
+         CALL iom_get( numrtr, jpdom_auto, 'TRB'//ctrcnm(jn), tr(:,:,:,jn,Kbb) )
+      END DO
+#else
       DO jn = 1, jptra      ! MLF only : Now time step
          CALL iom_get( numrtr, jpdom_auto, 'TRN'//ctrcnm(jn), tr(:,:,:,jn,Kmm) )
       END DO
+      IF( l_1st_euler .OR. ln_top_euler ) THEN
+         IF(lwp) WRITE(numout,*) '              + adjustment for forward Euler time stepping'
+         tr(:,:,:,1:jptra,Kbb) = tr(:,:,:,1:jptra,Kmm)
+      ELSE                  ! MLF only : Before time step
+         DO jn = 1, jptra
+            CALL iom_get( numrtr, jpdom_auto, 'TRB'//ctrcnm(jn), tr(:,:,:,jn,Kbb) )
+         END DO
+      END IF
 #endif
-      DO jn = 1, jptra      ! RK3 and MLF : Before time step
-         CALL iom_get( numrtr, jpdom_auto, 'TRB'//ctrcnm(jn), tr(:,:,:,jn,Kbb) )
-      END DO
       !
       IF(.NOT.lrxios) CALL iom_delay_rst( 'READ', 'TOP', numrtr )   ! read only TOP delayed global communication variables
    END SUBROUTINE trc_rst_read
diff --git a/src/TOP/trcstp.F90 b/src/TOP/trcstp.F90
index 9d7e7574b1874c87bcd76144cbfd7bb97c7e6bff..e016e27c21a29717d244b5d8d76cd13036a74989 100644
--- a/src/TOP/trcstp.F90
+++ b/src/TOP/trcstp.F90
@@ -115,9 +115,7 @@ CONTAINS
          IF(lrxios) CALL iom_context_finalize(      cr_toprst_cxt          )
          IF(lwm) CALL FLUSH( numont )                     ! flush namelist output
       ENDIF
-      IF( lrst_trc )            CALL trc_rst_wri  ( kt, Kbb, Kmm, Kaa  )       ! write tracer restart file
-!     IF( lrst_trc )            CALL trc_rst_wri  ( kt, Kmm, Kaa, Kbb  )       ! write tracer restart file
-
+      !
       IF( lk_trdmxl_trc  )      CALL trd_mxl_trc  ( kt,      Kaa       )       ! trends: Mixed-layer
       !
       IF( ln_top_euler ) THEN 
@@ -126,6 +124,9 @@ CONTAINS
          ! "before" fields = "now" fields.
          tr(:,:,:,:,Kmm) = tr(:,:,:,:,Kaa)
       ENDIF
+      !
+      IF( lrst_trc )            CALL trc_rst_wri  ( kt, Kbb, Kmm, Kaa  )       ! write tracer restart file
+!     IF( lrst_trc )            CALL trc_rst_wri  ( kt, Kmm, Kaa, Kbb  )       ! write tracer restart file
       !
       IF (ll_trcstat) THEN
          ztrai = 0._wp                                                   !  content of all tracers