Index: trunk/NEMO/OPA_SRC/DYN/dynbfr.F90
===================================================================
--- trunk/NEMO/OPA_SRC/DYN/dynbfr.F90	(revision 2468)
+++ trunk/NEMO/OPA_SRC/DYN/dynbfr.F90	(revision 2470)
@@ -76,9 +76,9 @@
             !
             ! Apply stability criteria on absolute value  : Min abs(bfr) => Max (bfr)
-            zbfru = MAX( bfrua(ji,jj), fse3u(ji,jj,ikbu)*zinv )
-            zbfrv = MAX( bfrva(ji,jj), fse3v(ji,jj,ikbv)*zinv )
+            zbfru = MAX( bfrua(ji,jj), fse3u(ji,jj,ikbum1)*zinv )
+            zbfrv = MAX( bfrva(ji,jj), fse3v(ji,jj,ikbvm1)*zinv )
             !
-            ua(ji,jj,ikbum1) = ua(ji,jj,ikbum1) + zbfru * ub(ji,jj,ikbum1) / fse3u(ji,jj,ikbu)
-            va(ji,jj,ikbvm1) = va(ji,jj,ikbvm1) + zbfrv * vb(ji,jj,ikbvm1) / fse3v(ji,jj,ikbv)
+            ua(ji,jj,ikbum1) = ua(ji,jj,ikbum1) + zbfru * ub(ji,jj,ikbum1) / fse3u(ji,jj,ikbum1)
+            va(ji,jj,ikbvm1) = va(ji,jj,ikbvm1) + zbfrv * vb(ji,jj,ikbvm1) / fse3v(ji,jj,ikbvm1)
             !
          END DO
Index: trunk/NEMO/OPA_SRC/DYN/dynspg_ts.F90
===================================================================
--- trunk/NEMO/OPA_SRC/DYN/dynspg_ts.F90	(revision 2468)
+++ trunk/NEMO/OPA_SRC/DYN/dynspg_ts.F90	(revision 2470)
@@ -93,6 +93,6 @@
       !!
       INTEGER  ::   ji, jj, jk, jn   ! dummy loop indices
-      INTEGER  ::   icycle           ! temporary scalar
-      INTEGER  ::   ikbu, ikbv        ! temporary scalar
+      INTEGER  ::   icycle                           ! temporary integers
+      INTEGER  ::   ikbu, ikbv, ikbum1, ikbvm1       !   -          -
 
       REAL(wp) ::   zraur, zcoef, z2dt_e, z2dt_b     ! temporary scalars
@@ -267,10 +267,13 @@
             ikbu = MIN( mbathy(ji+1,jj), mbathy(ji,jj) )
             ikbv = MIN( mbathy(ji,jj+1), mbathy(ji,jj) )
+            ikbum1 = MAX( ikbu-1, 1 )
+            ikbvm1 = MAX( ikbv-1, 1 )
+
             !
             ! Apply stability criteria for bottom friction
             !RBbug for vvl and external mode we may need to
             ! use varying fse3
-            zbfru  (ji,jj) = MAX( bfrua(ji,jj), fse3u(ji,jj,ikbu)*zcoef )
-            zbfrv  (ji,jj) = MAX( bfrva(ji,jj), fse3v(ji,jj,ikbv)*zcoef )
+            zbfru  (ji,jj) = MAX( bfrua(ji,jj), fse3u(ji,jj,ikbum1)*zcoef )
+            zbfrv  (ji,jj) = MAX( bfrva(ji,jj), fse3v(ji,jj,ikbvm1)*zcoef )
          END DO
       END DO
Index: trunk/NEMO/OPA_SRC/ZDF/zdfbfr.F90
===================================================================
--- trunk/NEMO/OPA_SRC/ZDF/zdfbfr.F90	(revision 2468)
+++ trunk/NEMO/OPA_SRC/ZDF/zdfbfr.F90	(revision 2470)
@@ -131,10 +131,10 @@
       USE iom   ! I/O module for ehanced bottom friction file
       !!
-      INTEGER ::   inum         ! logical unit for enhanced bottom friction file
-      INTEGER ::   ji, jj       ! dummy loop indexes
-      INTEGER ::   ikbu, ikbv   ! temporary integers
-      INTEGER ::   ictu, ictv   !    -          -
-      REAL(wp) ::  zminbfr, zmaxbfr   ! temporary scalars
-      REAL(wp) ::  zfru, zfrv         !    -         -
+      INTEGER ::   inum                         ! logical unit for enhanced bottom friction file
+      INTEGER ::   ji, jj                       ! dummy loop indexes
+      INTEGER ::   ikbu, ikbv, ikbum1, ikbvm1   ! temporary integers
+      INTEGER ::   ictu, ictv                   !    -          -
+      REAL(wp) ::  zminbfr, zmaxbfr             ! temporary scalars
+      REAL(wp) ::  zfru, zfrv                   !    -         -
       !!
       NAMELIST/nambfr/ nn_bfr, rn_bfri1, rn_bfri2, rn_bfeb2, ln_bfr2d, rn_bfrien
@@ -220,6 +220,8 @@
              ikbu = MIN( mbathy(ji+1,jj  ), mbathy(ji,jj) )
              ikbv = MIN( mbathy(ji  ,jj+1), mbathy(ji,jj) )
-             zfru = 0.5 * fse3u(ji,jj,ikbu) / rdt
-             zfrv = 0.5 * fse3v(ji,jj,ikbv) / rdt
+             ikbum1 = MAX( ikbu-1, 1 )
+             ikbvm1 = MAX( ikbv-1, 1 )
+             zfru = 0.5 * fse3u(ji,jj,ikbum1) / rdt
+             zfrv = 0.5 * fse3v(ji,jj,ikbvm1) / rdt
              IF( ABS( bfrcoef2d(ji,jj) ) > zfru ) THEN
                 IF( ln_ctl ) THEN
