Index: /NEMO/trunk/src/OFF/nemogcm.F90
===================================================================
--- /NEMO/trunk/src/OFF/nemogcm.F90	(revision 15445)
+++ /NEMO/trunk/src/OFF/nemogcm.F90	(revision 15446)
@@ -122,5 +122,4 @@
       ! 
       DO WHILE ( istp <= nitend .AND. nstop == 0 )    !==  OFF time-stepping  ==!
-
          IF( ln_timing ) THEN
             zstptiming = MPI_Wtime()
@@ -152,11 +151,14 @@
          Naa  = Nrhs
          !
-#if ! defined key_qco
+# if ! defined key_qco
          IF( .NOT.ln_linssh )   CALL dta_dyn_sf_interp( istp, Nnn )  ! calculate now grid parameters
-#endif  
+# endif  
 
 #else
                                 CALL dta_dyn_sed( istp,      Nnn      )       ! Interpolation of the dynamical fields
-
+                                CALL trc_stp    ( istp, Nbb, Nnn, Nrhs, Naa ) ! time-stepping
+         ! Swap time levels
+         Nnn = Nbb
+         Naa = Nbb
 #endif
          CALL stp_ctl    ( istp )             ! Time loop: control and print
Index: /NEMO/trunk/src/TOP/trcais.F90
===================================================================
--- /NEMO/trunk/src/TOP/trcais.F90	(revision 15445)
+++ /NEMO/trunk/src/TOP/trcais.F90	(revision 15446)
@@ -70,5 +70,5 @@
       ENDIF
       ! 
-      IF (.NOT. ln_rnf_icb) THEN
+      IF( .NOT. ln_rnf_icb ) THEN
          CALL ctl_stop( 'trc_ais_ini: no iceberg freswater flux in runoff file' )   ;  RETURN
       ENDIF
Index: /NEMO/trunk/src/TOP/trcbc.F90
===================================================================
--- /NEMO/trunk/src/TOP/trcbc.F90	(revision 15445)
+++ /NEMO/trunk/src/TOP/trcbc.F90	(revision 15446)
@@ -439,7 +439,8 @@
             IF( l_offline )   rn_rfact = 1._wp
             jl = n_trc_indcbc(jn)
+            sf_trccbc(jl)%fnow(:,:,1) = MAX( rtrn, sf_trccbc(jl)%fnow(:,:,1) ) ! avoid nedgative value due to interpolation
             DO_2D( 0, 0, 0, 1 )
                DO jk = 1, nk_rnf(ji,jj)
-                  zfact = rn_rfact / ( e1e2t(ji,jj) * h_rnf(ji,jj) * rn_cbc_time ) * tmask(ji,jj,1)
+                  zfact = rn_rfact / ( e1e2t(ji,jj) * h_rnf(ji,jj) * rn_cbc_time ) 
                   ptr(ji,jj,jk,jn,Krhs) = ptr(ji,jj,jk,jn,Krhs) + rf_trcfac(jl) * sf_trccbc(jl)%fnow(ji,jj,1) * zfact
                END DO
Index: /NEMO/trunk/src/TOP/trcdta.F90
===================================================================
--- /NEMO/trunk/src/TOP/trcdta.F90	(revision 15445)
+++ /NEMO/trunk/src/TOP/trcdta.F90	(revision 15446)
@@ -189,4 +189,5 @@
          ptrcdta(:,:,:) = sf_trcdta(kjl)%fnow(:,:,:) * tmask(:,:,:)
          ! 
+#if ! defined key_sed_off
          IF( ln_sco ) THEN                !== s- or mixed s-zps-coordinate  ==!
             !
@@ -220,7 +221,7 @@
             ! zps-coordinate (partial steps) interpolation at the last ocean level
             IF( ln_zps ) THEN
-                DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 
+                DO_2D( nn_hls, nn_hls, nn_hls, nn_hls )
                    ik = mbkt(ji,jj)
-                   IF( ik > 1 ) THEN
+                   IF( ik > 1 .AND. gdept_0(ji,jj,ik) < gdept_1d(ik) ) THEN
                       zl = ( gdept_1d(ik) - gdept_0(ji,jj,ik) ) / ( gdept_1d(ik) - gdept_1d(ik-1) )
                       ptrcdta(ji,jj,ik) = (1.-zl) * ptrcdta(ji,jj,ik) + zl * ptrcdta(ji,jj,ik-1)
@@ -235,4 +236,5 @@
             !
          ENDIF
+#endif
          ! Scale by multiplicative factor
          ptrcdta(:,:,:) = ptrcdta(:,:,:) * rf_trfac(kjl)
Index: /NEMO/trunk/src/TOP/trcini.F90
===================================================================
--- /NEMO/trunk/src/TOP/trcini.F90	(revision 15445)
+++ /NEMO/trunk/src/TOP/trcini.F90	(revision 15446)
@@ -244,11 +244,4 @@
       !
       IF( ln_trcdta )   CALL trc_dta_ini( jptra )           ! set initial tracers values
-      !
-      IF( ln_trcbc .AND. lltrcbc )  THEN 
-        CALL trc_bc_ini ( jptra, Kmm  )            ! set tracers Boundary Conditions
-        CALL trc_bc     ( nit000, Kmm, tr, Kaa )   ! tracers: surface and lateral Boundary Conditions
-      ENDIF
-      !
-      IF( ln_trcais ) CALL trc_ais_ini   ! set tracers from Antarctic Ice Sheet
       !
       IF( ln_rsttr ) THEN              ! restart from a file
@@ -273,4 +266,11 @@
       !
       tr(:,:,:,:,Kaa) = 0._wp
+      !
+      IF( ln_trcbc .AND. lltrcbc )  THEN
+        CALL trc_bc_ini ( jptra, Kmm  )            ! set tracers Boundary Conditions
+        CALL trc_bc     ( nit000, Kmm, tr, Kaa )   ! tracers: surface and lateral Boundary Conditions
+      ENDIF
+      !
+      IF( ln_trcais ) CALL trc_ais_ini   ! set tracers from Antarctic Ice Sheet
       !                                                         ! Partial top/bottom cell: GRADh(tr(Kmm))
    END SUBROUTINE trc_ini_state
Index: /NEMO/trunk/src/TOP/trcstp.F90
===================================================================
--- /NEMO/trunk/src/TOP/trcstp.F90	(revision 15445)
+++ /NEMO/trunk/src/TOP/trcstp.F90	(revision 15446)
@@ -102,5 +102,7 @@
       CALL trc_wri      ( kt,      Kmm            )       ! output of passive tracers with iom I/O manager
       CALL trc_sms      ( kt, Kbb, Kmm, Krhs      )       ! tracers: sinks and sources
+#if ! defined key_sed_off
       CALL trc_trp      ( kt, Kbb, Kmm, Krhs, Kaa )       ! transport of passive tracers
+#endif
            !
            ! Note passive tracers have been time-filtered in trc_trp but the time level
