Index: /branches/2017/dev_r8624_ENHANCE4_FREESURFACE/DOC/Namelists/namdyn_spg
===================================================================
--- /branches/2017/dev_r8624_ENHANCE4_FREESURFACE/DOC/Namelists/namdyn_spg	(revision 8887)
+++ /branches/2017/dev_r8624_ENHANCE4_FREESURFACE/DOC/Namelists/namdyn_spg	(revision 8888)
@@ -12,3 +12,4 @@
          rn_bt_cmax   =  0.8        ! =T : the Maximum Courant Number allowed
          nn_baro      = 30          ! =F : the number of sub-step in rn_rdt seconds
+      rn_bt_alpha   = 0.1        ! Temporal diffusion parameter (if ln_bt_av=F)
 /
Index: /branches/2017/dev_r8624_ENHANCE4_FREESURFACE/NEMOGCM/CONFIG/SHARED/namelist_ref
===================================================================
--- /branches/2017/dev_r8624_ENHANCE4_FREESURFACE/NEMOGCM/CONFIG/SHARED/namelist_ref	(revision 8887)
+++ /branches/2017/dev_r8624_ENHANCE4_FREESURFACE/NEMOGCM/CONFIG/SHARED/namelist_ref	(revision 8888)
@@ -835,5 +835,5 @@
          rn_bt_cmax   =  0.8        ! =T : the Maximum Courant Number allowed
          nn_baro      = 30          ! =F : the number of sub-step in rn_rdt seconds
-      rn_bt_alpha   = 0.         ! Temporal diffusion parameter (if ln_bt_av=F)
+      rn_bt_alpha   = 0.1        ! Temporal diffusion parameter (if ln_bt_av=F)
 /
 !-----------------------------------------------------------------------
Index: /branches/2017/dev_r8624_ENHANCE4_FREESURFACE/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90
===================================================================
--- /branches/2017/dev_r8624_ENHANCE4_FREESURFACE/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90	(revision 8887)
+++ /branches/2017/dev_r8624_ENHANCE4_FREESURFACE/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90	(revision 8888)
@@ -132,6 +132,6 @@
             ! so that asselin contribution is removed at the same time 
             DO jk = 1, jpkm1
-               un(:,:,jk) = ( un(:,:,jk) - un_adv(:,:) + un_b(:,:) )*umask(:,:,jk)
-               vn(:,:,jk) = ( vn(:,:,jk) - vn_adv(:,:) + vn_b(:,:) )*vmask(:,:,jk)
+               un(:,:,jk) = ( un(:,:,jk) - un_adv(:,:)*r1_hu_n(:,:) + un_b(:,:) )*umask(:,:,jk)
+               vn(:,:,jk) = ( vn(:,:,jk) - vn_adv(:,:)*r1_hv_n(:,:) + vn_b(:,:) )*vmask(:,:,jk)
             END DO  
          ENDIF
Index: /branches/2017/dev_r8624_ENHANCE4_FREESURFACE/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90
===================================================================
--- /branches/2017/dev_r8624_ENHANCE4_FREESURFACE/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90	(revision 8887)
+++ /branches/2017/dev_r8624_ENHANCE4_FREESURFACE/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90	(revision 8888)
@@ -77,5 +77,5 @@
 
    !! Time filtered arrays at baroclinic time step:
-   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   un_adv , vn_adv     !: Advection vel. at "now" barocl. step
+   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   un_adv , vn_adv     !: Advection fluxes at "now" barocl. step
 
    !! * Substitutions
@@ -128,5 +128,5 @@
       !!      -Update the filtered free surface at step "n+1"      : ssha
       !!      -Update filtered barotropic velocities at step "n+1" : ua_b, va_b
-      !!      -Compute barotropic advective velocities at step "n" : un_adv, vn_adv
+      !!      -Compute barotropic advective fluxes at step "n"     : un_adv, vn_adv
       !!      These are used to advect tracers and are compliant with discrete
       !!      continuity equation taken at the baroclinic time steps. This 
@@ -1030,20 +1030,19 @@
       !
       ! Set advection velocity correction:
-      zwx(:,:) = un_adv(:,:)
-      zwy(:,:) = vn_adv(:,:)
-      IF  ( kt == nit000 .AND. neuler==0 ) un_bf(:,:) = 0._wp ; vn_bf(:,:) = 0._wp
-      !     
-      IF( ( kt == nit000 .AND. neuler==0 ) .OR. .NOT.ln_bt_fw ) THEN     
-         un_adv(:,:) = zwx(:,:) * r1_hu_n(:,:)
-         vn_adv(:,:) = zwy(:,:) * r1_hv_n(:,:)
-      ELSE
-         un_adv(:,:) = z1_2 * ( ub2_b(:,:) + zwx(:,:) - atfp * un_bf(:,:) ) * r1_hu_n(:,:)
-         vn_adv(:,:) = z1_2 * ( vb2_b(:,:) + zwy(:,:) - atfp * vn_bf(:,:) ) * r1_hv_n(:,:)
-         ! Update corrective fluxes for next time step:
-         un_bf(:,:)  = atfp * un_bf(:,:) + (zwx(:,:) - ub2_b(:,:))
-         vn_bf(:,:)  = atfp * vn_bf(:,:) + (zwy(:,:) - vb2_b(:,:))
-      END IF
-
-      IF( ln_bt_fw ) THEN ! Save integrated transport for next computation
+      IF (ln_bt_fw) THEN
+         zwx(:,:) = un_adv(:,:)
+         zwy(:,:) = vn_adv(:,:)
+         IF( .NOT.( kt == nit000 .AND. neuler==0 ) ) THEN
+            un_adv(:,:) = z1_2 * ( ub2_b(:,:) + zwx(:,:) - atfp * un_bf(:,:) )
+            vn_adv(:,:) = z1_2 * ( vb2_b(:,:) + zwy(:,:) - atfp * vn_bf(:,:) )
+            !
+            ! Update corrective fluxes for next time step:
+            un_bf(:,:)  = atfp * un_bf(:,:) + (zwx(:,:) - ub2_b(:,:))
+            vn_bf(:,:)  = atfp * vn_bf(:,:) + (zwy(:,:) - vb2_b(:,:))
+         ELSE
+            un_bf(:,:) = 0._wp
+            vn_bf(:,:) = 0._wp 
+         END IF         
+         ! Save integrated transport for next computation
          ub2_b(:,:) = zwx(:,:)
          vb2_b(:,:) = zwy(:,:)
@@ -1081,11 +1080,11 @@
       DO jk = 1, jpkm1
          ! Correct velocities:
-         un(:,:,jk) = ( un(:,:,jk) + un_adv(:,:) - un_b(:,:) ) * umask(:,:,jk)
-         vn(:,:,jk) = ( vn(:,:,jk) + vn_adv(:,:) - vn_b(:,:) ) * vmask(:,:,jk)
+         un(:,:,jk) = ( un(:,:,jk) + un_adv(:,:)*r1_hu_n(:,:) - un_b(:,:) ) * umask(:,:,jk)
+         vn(:,:,jk) = ( vn(:,:,jk) + vn_adv(:,:)*r1_hv_n(:,:) - vn_b(:,:) ) * vmask(:,:,jk)
          !
       END DO
       !
-      CALL iom_put(  "ubar", un_adv(:,:)      )    ! barotropic i-current
-      CALL iom_put(  "vbar", vn_adv(:,:)      )    ! barotropic i-current
+      CALL iom_put(  "ubar", un_adv(:,:)*r1_hu_n(:,:) )    ! barotropic i-current
+      CALL iom_put(  "vbar", vn_adv(:,:)*r1_hv_n(:,:) )    ! barotropic i-current
       !
 #if defined key_agrif
@@ -1320,11 +1319,13 @@
 #endif
       !
-      IF(lwp) WRITE(numout,*)    '     Time filter choice, nn_bt_flt: ', nn_bt_flt
-      SELECT CASE ( nn_bt_flt )
-         CASE( 0 )      ;   IF(lwp) WRITE(numout,*) '           Dirac'
-         CASE( 1 )      ;   IF(lwp) WRITE(numout,*) '           Boxcar: width = nn_baro'
-         CASE( 2 )      ;   IF(lwp) WRITE(numout,*) '           Boxcar: width = 2*nn_baro' 
-         CASE DEFAULT   ;   CALL ctl_stop( 'unrecognised value for nn_bt_flt: should 0,1,2' )
-      END SELECT
+      IF(ln_bt_av) THEN
+         IF(lwp) WRITE(numout,*)    '     Time filter choice, nn_bt_flt: ', nn_bt_flt
+         SELECT CASE ( nn_bt_flt )
+            CASE( 0 )      ;   IF(lwp) WRITE(numout,*) '           Dirac'
+            CASE( 1 )      ;   IF(lwp) WRITE(numout,*) '           Boxcar: width = nn_baro'
+            CASE( 2 )      ;   IF(lwp) WRITE(numout,*) '           Boxcar: width = 2*nn_baro' 
+            CASE DEFAULT   ;   CALL ctl_stop( 'unrecognised value for nn_bt_flt: should 0,1,2' )
+         END SELECT
+      ENDIF
       !
       IF(lwp) WRITE(numout,*) ' '
@@ -1339,6 +1340,7 @@
       ENDIF
 
-      IF ( ln_bt_av.AND.(rn_bt_alpha > 0._wp) ) THEN
-         CALL ctl_stop( 'dynspg_ts ERROR: if rn_bt_alpha > 0, remove temporal averaging' )
+      IF ( ln_bt_av.AND.(rn_bt_alpha /= 0._wp) ) THEN
+         CALL ctl_warn( 'dynspg_ts: with temporal averaging, we assume rn_bt_alpha=0.') 
+         rn_bt_alpha=0._wp
       ENDIF
       !
Index: /branches/2017/dev_r8624_ENHANCE4_FREESURFACE/NEMOGCM/NEMO/OPA_SRC/oce.F90
===================================================================
--- /branches/2017/dev_r8624_ENHANCE4_FREESURFACE/NEMOGCM/NEMO/OPA_SRC/oce.F90	(revision 8887)
+++ /branches/2017/dev_r8624_ENHANCE4_FREESURFACE/NEMOGCM/NEMO/OPA_SRC/oce.F90	(revision 8888)
@@ -45,5 +45,5 @@
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::                              hvr_e  !: inverse of v-depth
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   ub2_b  , vb2_b           !: Half step fluxes (ln_bt_fw=T)
-   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   un_bf  , vn_bf           !: Asselin filter corrective fluxes (ln_bt_fw=T)
+   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   un_bf  , vn_bf           !: Asselin filtered half step fluxes (ln_bt_fw=T)
 #if defined key_agrif
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   ub2_i_b, vb2_i_b         !: Half step time integrated fluxes 
