diff --git a/src/OCE/DYN/dynspg_ts.F90 b/src/OCE/DYN/dynspg_ts.F90
index 69d04f57218a85c7a88020cfa1fd5135c39723ac..db3a442ad6872da49202845798d18b2d461d566c 100644
--- a/src/OCE/DYN/dynspg_ts.F90
+++ b/src/OCE/DYN/dynspg_ts.F90
@@ -911,7 +911,7 @@ CONTAINS
       ENDIF
             
       CALL iom_put(  "ubar", un_adv(:,:)*r1_hu(:,:,Kmm) )    ! barotropic i-current
-      CALL iom_put(  "vbar", vn_adv(:,:)*r1_hv(:,:,Kmm) )    ! barotropic i-current
+      CALL iom_put(  "vbar", vn_adv(:,:)*r1_hv(:,:,Kmm) )    ! barotropic j-current
 
       !                    !==  END Phase 3 for MLF time integration  ==!
 #endif
diff --git a/src/OCE/stp2d.F90 b/src/OCE/stp2d.F90
index d865a9685fde16887fb647eec721c89bfeb432ba..b7a99bd0bf575369ecdfd1b0cd92ad894515b903 100644
--- a/src/OCE/stp2d.F90
+++ b/src/OCE/stp2d.F90
@@ -208,13 +208,13 @@ CONTAINS
       ! 		!==  Net water flux forcing  ==!  (applied to a water column)
       !
       IF (ln_bt_fw) THEN                          ! FORWARD integration: use kt+1/2 fluxes (NOW+1/2)
-         sshe_rhs(:,:) = r1_rho0 * ( emp(:,:) - rnf(:,:) + fwfisf_cav(:,:) + fwfisf_par(:,:) )
+         sshe_rhs(:,:) = r1_rho0 * ( emp(:,:) - rnf(:,:) - fwfisf_cav(:,:) - fwfisf_par(:,:) )
       ELSE                                        ! CENTRED integration: use kt-1/2 + kt+1/2 fluxes (NOW)
          zztmp = r1_rho0 * r1_2
          sshe_rhs(:,:) = zztmp * (   emp(:,:)        + emp_b(:,:)          &
             &                      - rnf(:,:)        - rnf_b(:,:)          &
-            &                      + fwfisf_cav(:,:) + fwfisf_cav_b(:,:)   &
-            &                      + fwfisf_par(:,:) + fwfisf_par_b(:,:)   )
+            &                      - fwfisf_cav(:,:) - fwfisf_cav_b(:,:)   &
+            &                      - fwfisf_par(:,:) - fwfisf_par_b(:,:)   )
       ENDIF
       !
       ! 		!==  Stokes drift divergence  ==!   (if exist)
diff --git a/src/OCE/stprk3.F90 b/src/OCE/stprk3.F90
index c027b91a4d840644c423f7ed6c80334119809c80..139cd57c62b73d552ad63ce9435d728f3ab1cb82 100644
--- a/src/OCE/stprk3.F90
+++ b/src/OCE/stprk3.F90
@@ -184,7 +184,7 @@ CONTAINS
       !  RK3 : single first external mode computation
       !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
 
-      CALL stp_2D( kstp, Nbb, Nbb, Naa, Nrhs )   ! out: ssh, (uu_b,vv_b) and (un_adv,vn_adv) at Naa
+      CALL stp_2D( kstp, Nbb, Nbb, Naa, Nrhs )   ! out: ssh, (uu_b,vv_b) at Naa and (un_adv,vn_adv) between Nbb and Naa
 
 
       !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
diff --git a/src/OCE/stprk3_stg.F90 b/src/OCE/stprk3_stg.F90
index 9f9357cefa63bc18ef62b5208248efd88dd45b2a..38e90efd0f779c10d716a730531a7cb88b14963f 100644
--- a/src/OCE/stprk3_stg.F90
+++ b/src/OCE/stprk3_stg.F90
@@ -123,7 +123,7 @@ CONTAINS
          !
          !                     !==  ssh/h0 ratio at Kaa  ==! 
          !
-         IF( .NOT.lk_linssh ) THEN     ! "after" ssh/h_0 ratio at t,u,v-column
+         IF( .NOT.lk_linssh ) THEN     ! "after" ssh/h_0 ratio at t,u,v-column computed at N+1 stored in r3.a 
             !
             ALLOCATE( r3ta(jpi,jpj) , r3ua(jpi,jpj) , r3va(jpi,jpj) , r3fa(jpi,jpj) , r3fb(jpi,jpj) )
             !
@@ -131,7 +131,7 @@ CONTAINS
             CALL dom_qco_r3c_RK3( ssha, r3ta, r3ua, r3va, r3fa )
             !
             CALL lbc_lnk( 'stprk3_stg', r3ua, 'U', 1._wp, r3va, 'V', 1._wp, r3fa, 'F', 1._wp )
-            !
+            !                          ! 
             r3t(:,:,Kaa) = r2_3 * r3t(:,:,Kbb) + r1_3 * r3ta(:,:)   ! at N+1/3 (Kaa)
             r3u(:,:,Kaa) = r2_3 * r3u(:,:,Kbb) + r1_3 * r3ua(:,:)
             r3v(:,:,Kaa) = r2_3 * r3v(:,:,Kbb) + r1_3 * r3va(:,:)
@@ -194,7 +194,12 @@ CONTAINS
          zaV(ji,jj,jk) = vv(ji,jj,jk,Kmm) + zvb(ji,jj)*vmask(ji,jj,jk)
       END_3D
       !                                            !- vertical components -!   ww
-                         CALL wzv  ( kstp, Kbb, Kmm, Kaa, zaU, zaV, ww )     ! ww cross-level velocity
+      !
+      IF( ln_dynadv_vec ) THEN                                            ! ww cross-level velocity consistent with uu/vv at Kmm
+                         CALL wzv  ( kstp, Kbb, Kmm, Kaa, uu(:,:,:,Kmm), vv(:,:,:,Kmm), ww )
+      ELSE                                                                ! ww cross-level velocity consistent with zaU/zaV
+                         CALL wzv  ( kstp, Kbb, Kmm, Kaa, zaU, zaV, ww )
+      ENDIF
 
 !!st      IF( ln_zad_Aimp )  CALL wAimp( kstp, ww, wi       )     ! Adaptive-implicit vertical advection partitioning
       !                                                            !==>>>  implicite for stages 1 & 2 ????
@@ -209,7 +214,11 @@ CONTAINS
       !
 !===>>>>>> Modify dyn_adv_... dyn_keg routines so that Krhs to zero useless
       !                                         ! advection (VF or FF)	==> RHS
-      CALL dyn_adv( kstp, Kbb, Kmm      , uu, vv, Krhs, zaU, zaV, ww )
+      IF( ln_dynadv_vec ) THEN                                            ! uu and vv used for momentum advection
+         CALL dyn_adv( kstp, Kbb, Kmm      , uu, vv, Krhs)
+      ELSE                                                                ! advective velocity used for momentum advection
+         CALL dyn_adv( kstp, Kbb, Kmm      , uu, vv, Krhs, zaU, zaV, ww )
+      ENDIF
       !                                         ! Coriolis / vorticity  ==> RHS
       CALL dyn_vor( kstp,      Kmm      , uu, vv, Krhs )
       !
@@ -219,11 +228,7 @@ CONTAINS
 
 !===>>>>>> Modify dyn_hpg & dyn_hpg_...  routines : rhd computed in dyn_hpg and pass in argument to dyn_hpg_...
 
-!!st      IF( kstg == 3 ) THEN
-!         CALL eos    ( ts(:,:,:,:,Kmm), rhd, rhop, gdept_0 ) ! now in situ density for hpg computation
-!      ELSE
-         CALL eos    ( ts, Kmm, rhd )              ! Kmm in situ density anomaly for hpg computation
-!      ENDIF
+      CALL eos    ( ts, Kmm, rhd )              ! Kmm in situ density anomaly for hpg computation
 
 !!gm end
       CALL dyn_hpg( kstp,      Kmm      , uu, vv, Krhs )
@@ -237,13 +242,15 @@ CONTAINS
 !         vv(ji,jj,jk,Krhs) = vv(ji,jj,jk,Krhs) - grav * ( ssh(ji  ,jj+1,Kmm) - ssh(ji,jj,Kmm) )
 !      END_3D
 !!gm      
-      
+
       !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
       ! RHS of tracers : ADV only using (zaU,zaV,ww)
       !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-
-# if defined key_top
       !
+      !                                            ! Advective velocity needed for tracers advection - already computed if ln_dynadv_vec=F
+      IF( ln_dynadv_vec )   CALL wzv  ( kstp, Kbb, Kmm, Kaa, zaU, zaV, ww )
+      !
+# if defined key_top
       !                       !==  Passive Tracer  ==!
       !
       SELECT CASE( kstg )
@@ -308,11 +315,7 @@ CONTAINS
 
 !===>>>>>> Modify tra_adv_...  routines so that Krhs to zero useless
       DO jn = 1, jpts
-!!st does not work due to lbc_lnk north fold : need to be merged with the trunk LBC pb changes for the namelist 
-!!         DO_3D( 0, 0, 0, 0, 1, jpkm1 )
-!!            ts(ji,jj,jk,jn,Krhs) = 0._wp                                    ! set tracer trends to zero
-!!         END_3D
-         ts(:,:,:,jn,Krhs) = 0._wp
+         ts(:,:,:,jn,Krhs) = 0._wp                                   ! set tracer trends to zero (:,:,:) needed otherwise it does not work (?)
       END DO
 
       CALL eos( ts(:,:,:,:,Kmm), rhd, rhop, gdept_0 ) ! now in potential density for tra_mle computation