diff --git a/src/OCE/BDY/bdyini.F90 b/src/OCE/BDY/bdyini.F90
index a89ac081aac738aa61de56ac4c8e03d07c302c37..12fe7e728d4fb4a91b95153228337405a7beabaa 100644
--- a/src/OCE/BDY/bdyini.F90
+++ b/src/OCE/BDY/bdyini.F90
@@ -24,6 +24,7 @@ MODULE bdyini
    USE bdytides       ! open boundary cond. setting   (bdytide_init routine)
    USE tide_mod, ONLY: ln_tide ! tidal forcing
    USE phycst  , ONLY: rday
+   USE netcdf
    !
    USE in_out_manager ! I/O units
    USE lbclnk         ! ocean lateral boundary conditions (or mpp link)
@@ -1775,6 +1776,8 @@ CONTAINS
             nbidta(icount, igrd, ib_bdy) = -ib_bdy ! Discount this point
             nbjdta(icount, igrd, ib_bdy) = -ib_bdy ! Discount this point
          ENDDO
+
+         IF(lwp) call bdy_coords_wri( nbidta, nbjdta, nbrdta, icount, ib_bdy, 'East' )
       ENDDO
       !
       ! West
@@ -1820,6 +1823,8 @@ CONTAINS
             nbidta(icount, igrd, ib_bdy) = -ib_bdy ! Discount this point
             nbjdta(icount, igrd, ib_bdy) = -ib_bdy ! Discount this point
          ENDDO
+
+         IF(lwp) call bdy_coords_wri( nbidta, nbjdta, nbrdta, icount, ib_bdy, 'West' )
       ENDDO
       !
       ! North
@@ -1865,6 +1870,8 @@ CONTAINS
                nbrdta(icount, igrd, ib_bdy) = ir
             ENDDO
          ENDDO
+
+         IF(lwp) call bdy_coords_wri( nbidta, nbjdta, nbrdta, icount, ib_bdy, 'North' )
       ENDDO
       !
       ! South
@@ -1910,12 +1917,14 @@ CONTAINS
                nbrdta(icount, igrd, ib_bdy) = ir
             ENDDO
          ENDDO
+
+         IF(lwp) call bdy_coords_wri( nbidta, nbjdta, nbrdta, icount, ib_bdy, 'South' )
       ENDDO
 
       
    END SUBROUTINE bdy_coords_seg
-   
-   
+
+
    SUBROUTINE bdy_ctl_corn( ib1, ib2 )
       !!----------------------------------------------------------------------
       !!                 ***  ROUTINE bdy_ctl_corn  ***
@@ -1948,6 +1957,85 @@ CONTAINS
    END SUBROUTINE bdy_ctl_corn
 
 
+   SUBROUTINE bdy_coords_wri( nbidta, nbjdta, nbrdta, icount, id_seg, segment )
+      !!----------------------------------------------------------------------
+      !!                 ***  ROUTINE bdy_coords_wri  ***
+      !!
+      !! ** Purpose :  write to file  nbidta, nbidta, nbrdta for bdy built with segments
+      !!
+      !! ** Method  :
+      !!
+      !!----------------------------------------------------------------------
+      INTEGER, DIMENSION(:,:,:), intent(in   )  :: nbidta, nbjdta, nbrdta   ! Index arrays: i and j indices & rim of bdy dta
+      INTEGER,                   intent(in   )  :: icount, id_seg
+      CHARACTER(LEN=*),          intent(in   )  :: segment
+      !!
+      INTEGER  ::   igrd                   ! grid type (t=1, u=2, v=3)
+      CHARACTER(LEN=1) , DIMENSION(jpbgrd)  ::   cgrid = (/'t','u','v'/)
+      INTEGER, DIMENSION(2) :: vardim
+      INTEGER, DIMENSION(3) :: xbdim, igrdsize
+      INTEGER, DIMENSION(3,3) :: varids
+      INTEGER  :: istatus, idfile, ybdim, kdim, kid
+      CHARACTER(len=nf90_max_name) :: filename
+      !!----------------------------------------------------------------------
+      filename='coordinates.bdy.'//TRIM(segment)//'.nc'
+
+      ! discount last point in U or V (see bdy_coords_seg)
+      igrdsize(:) = icount
+      SELECT CASE( TRIM(segment) )
+         CASE( 'North', 'South' ) ; igrdsize(2) = icount - 1
+         CASE( 'East', 'West' )   ; igrdsize(3) = icount - 1
+      END SELECT
+
+      ! Open output filename
+      istatus = nf90_create( TRIM( filename ), nf90_clobber, idfile )
+      istatus = nf90_put_att( idfile, nf90_global, 'title', 'BDY coordinate file' )
+      istatus = nf90_put_att( idfile, nf90_global, 'boundary', TRIM(segment) )
+      istatus = nf90_put_att( idfile, nf90_global, 'rimwidth', MAXVAL(nbrdta(:, 1, id_seg)) )
+
+      ! Create the dimensions
+      istatus = nf90_def_dim( idfile, 'yb'  , 1, ybdim)
+      istatus = nf90_def_dim( idfile, 'xbT'  , igrdsize(1), xbdim(1))
+      istatus = nf90_def_dim( idfile, 'xbU'  , igrdsize(2), xbdim(2))
+      istatus = nf90_def_dim( idfile, 'xbV'  , igrdsize(3), xbdim(3))
+      istatus = nf90_def_dim( idfile, 'lev'  , jpk, kdim)
+
+      ! Define netCDF variables
+      DO igrd = 1, 3
+         vardim(1) = xbdim(igrd)
+         vardim(2) = ybdim
+         istatus = nf90_def_var( idfile, 'nbi'//cgrid(igrd), nf90_short, vardim, varids(igrd,1) )
+         istatus = nf90_put_att( idfile, varids(igrd,1), 'long_name', cgrid(igrd)//'-grid index along X axis')
+         istatus = nf90_put_att( idfile, varids(igrd,1), 'units', '-')
+         istatus = nf90_def_var( idfile, 'nbj'//cgrid(igrd), nf90_short, vardim, varids(igrd,2) )
+         istatus = nf90_put_att( idfile, varids(igrd,2), 'long_name', cgrid(igrd)//'-grid index along Y axis')
+         istatus = nf90_put_att( idfile, varids(igrd,2), 'units', '-')
+         istatus = nf90_def_var( idfile, 'nbr'//cgrid(igrd), nf90_short, vardim, varids(igrd,3) )
+         istatus = nf90_put_att( idfile, varids(igrd,3), 'long_name', 'Rim index of segment')
+         istatus = nf90_put_att( idfile, varids(igrd,3), 'units', '-')
+      ENDDO
+      istatus = nf90_def_var( idfile, 'depth', nf90_float, kdim, kid)
+      istatus = nf90_put_att( idfile, kid, 'long_name', 'Vertical levels')
+      istatus = nf90_put_att( idfile, kid, 'units', 'meters')
+
+
+      ! Stop definitions
+      istatus = nf90_enddef( idfile )
+
+      ! Write the variables (remove nn_hls, it is added back when reading the file)
+      DO igrd = 1, 3
+         istatus = nf90_put_var( idfile, varids(igrd,1), nbidta(1:igrdsize(igrd),igrd,id_seg) - nn_hls)
+         istatus = nf90_put_var( idfile, varids(igrd,2), nbjdta(1:igrdsize(igrd),igrd,id_seg) - nn_hls)
+         istatus = nf90_put_var( idfile, varids(igrd,3), nbrdta(1:igrdsize(igrd),igrd,id_seg) )
+      ENDDO
+      istatus = nf90_put_var( idfile, kid, gdept_1d(:))
+
+      ! Close the file
+      istatus = nf90_close( idfile )
+
+   END SUBROUTINE bdy_coords_wri
+
+
    SUBROUTINE bdy_meshwri()
       !!----------------------------------------------------------------------
       !!                 ***  ROUTINE bdy_meshwri  ***