Index: /branches/UKMO/dev_r5518_GO6_package_text_diagnostics/NEMOGCM/NEMO/OPA_SRC/ICB/icbclv.F90
===================================================================
--- /branches/UKMO/dev_r5518_GO6_package_text_diagnostics/NEMOGCM/NEMO/OPA_SRC/ICB/icbclv.F90	(revision 10752)
+++ /branches/UKMO/dev_r5518_GO6_package_text_diagnostics/NEMOGCM/NEMO/OPA_SRC/ICB/icbclv.F90	(revision 10753)
@@ -56,4 +56,5 @@
       INTEGER                         :: imx                           ! temporary integer for max berg class
       LOGICAL, SAVE                   :: ll_first_call = .TRUE.
+      LOGICAL                         :: ll_write
       !!----------------------------------------------------------------------
       !
@@ -68,5 +69,5 @@
       ! nn_coupled_iceshelf_fluxes uninitialised unless lk_oasis=true
       IF( nn_coupled_iceshelf_fluxes .gt. 0 ) THEN
-
+        ll_write = ( MOD( kt, sn_cfctl%ptimincr ) == 0 ) .OR. ( kt == nitend ) .AND. lwp
         ! Adjust total calving rates so that sum of iceberg calving and iceshelf melting in the northern
         ! and southern hemispheres equals rate of increase of mass of greenland and antarctic ice sheets
@@ -80,8 +81,8 @@
 
          ! check
-         IF(lwp) WRITE(numout, *) 'Greenland iceberg calving climatology (kg/s) : ',zgreenland_calving_sum
+         IF(ll_write) WRITE(numout, *) 'Greenland iceberg calving climatology (kg/s) : ',zgreenland_calving_sum
          zgreenland_calving_sum = SUM( berg_grid%calving(:,:) * greenland_icesheet_mask(:,:) )
          IF( lk_mpp ) CALL mpp_sum( zgreenland_calving_sum )
-         IF(lwp) WRITE(numout, *) 'Greenland iceberg calving adjusted value (kg/s) : ',zgreenland_calving_sum
+         IF(ll_write) WRITE(numout, *) 'Greenland iceberg calving adjusted value (kg/s) : ',zgreenland_calving_sum
 
          zantarctica_calving_sum = SUM( berg_grid%calving(:,:) * antarctica_icesheet_mask(:,:) )
@@ -92,8 +93,8 @@
  
          ! check
-         IF(lwp) WRITE(numout, *) 'Antarctica iceberg calving climatology (kg/s) : ',zantarctica_calving_sum
+         IF(ll_write) WRITE(numout, *) 'Antarctica iceberg calving climatology (kg/s) : ',zantarctica_calving_sum
          zantarctica_calving_sum = SUM( berg_grid%calving(:,:) * antarctica_icesheet_mask(:,:) )
          IF( lk_mpp ) CALL mpp_sum( zantarctica_calving_sum )
-         IF(lwp) WRITE(numout, *) 'Antarctica iceberg calving adjusted value (kg/s) : ',zantarctica_calving_sum
+         IF(ll_write) WRITE(numout, *) 'Antarctica iceberg calving adjusted value (kg/s) : ',zantarctica_calving_sum
 
       ENDIF
@@ -218,5 +219,5 @@
       CALL lbc_lnk( berg_grid%stored_heat, 'T', 1._wp )
       !
-      IF( nn_verbose_level > 0 .AND. icntmax > 1 )   WRITE(numicb,*) 'icb_clv: icnt=', icnt,' on', narea
+      IF( nn_verbose_level > 0 .AND. icntmax > 1 .AND. numicb.NE.-1)   WRITE(numicb,*) 'icb_clv: icnt=', icnt,' on', narea
       !
    END SUBROUTINE  icb_clv
Index: /branches/UKMO/dev_r5518_GO6_package_text_diagnostics/NEMOGCM/NEMO/OPA_SRC/ICB/icbdia.F90
===================================================================
--- /branches/UKMO/dev_r5518_GO6_package_text_diagnostics/NEMOGCM/NEMO/OPA_SRC/ICB/icbdia.F90	(revision 10752)
+++ /branches/UKMO/dev_r5518_GO6_package_text_diagnostics/NEMOGCM/NEMO/OPA_SRC/ICB/icbdia.F90	(revision 10753)
@@ -311,6 +311,8 @@
                                     'returned',calving_ret_net)
          ENDIF
-         WRITE( numicb, '("calved by class = ",i6,20(",",i6))') (nbergs_calved_by_class(ik),ik=1,nclasses)
-         IF ( nspeeding_tickets > 0 ) WRITE( numicb, '("speeding tickets issued = ",i6)') nspeeding_tickets
+         IF(numicb.NE.-1) THEN
+           WRITE( numicb, '("calved by class = ",i6,20(",",i6))') (nbergs_calved_by_class(ik),ik=1,nclasses)
+           IF ( nspeeding_tickets > 0 ) WRITE( numicb, '("speeding tickets issued = ",i6)') nspeeding_tickets
+         ENDIF
 
          nbergs_start              = nbergs_end
@@ -418,9 +420,9 @@
          stored_start = SUM( berg_grid%stored_ice(:,:,:) )
          IF( lk_mpp ) CALL mpp_sum( stored_start )
-         WRITE(numicb,'(a,es13.6,a)')   'icb_dia_income: initial stored mass=',stored_start,' kg'
+         IF(numicb.NE.-1) WRITE(numicb,'(a,es13.6,a)')   'icb_dia_income: initial stored mass=',stored_start,' kg'
          !
          stored_heat_start = SUM( berg_grid%stored_heat(:,:) )
          IF( lk_mpp ) CALL mpp_sum( stored_heat_start )
-         WRITE(numicb,'(a,es13.6,a)')    'icb_dia_income: initial stored heat=',stored_heat_start,' J'
+         IF(numicb.NE.-1) WRITE(numicb,'(a,es13.6,a)')    'icb_dia_income: initial stored heat=',stored_heat_start,' J'
       ENDIF
       !
@@ -495,5 +497,6 @@
       !
       IF ( PRESENT(kbergs) ) THEN
-         WRITE(numicb,100) cd_budgetstr // ' state:',                                    &
+         IF(numicb.NE.-1) & 
+            &        WRITE(numicb,100) cd_budgetstr // ' state:',                        &
                            cd_startstr  // ' start',  pstartval,         cd_budgetunits, &
                            cd_endstr    // ' end',    pendval,           cd_budgetunits, &
@@ -501,5 +504,6 @@
                            '# of bergs', kbergs
       ELSE
-         WRITE(numicb,100) cd_budgetstr // ' state:',                                   &
+         IF(numicb.NE.-1) &
+            &        WRITE(numicb,100) cd_budgetstr // ' state:',                       &
                            cd_startstr  // ' start', pstartval,         cd_budgetunits, &
                            cd_endstr    // ' end',   pendval,           cd_budgetunits, &
@@ -517,5 +521,6 @@
       !!----------------------------------------------------------------------
       !
-      WRITE(numicb,200) cd_budgetstr // ' check:',                 &
+      IF(numicb.NE.-1) &
+         &        WRITE(numicb,200) cd_budgetstr // ' check:',     &
                         cd_startstr,    pstartval, cd_budgetunits, &
                         cd_endstr,      pendval,   cd_budgetunits, &
@@ -538,5 +543,6 @@
          &   MAX( 1.e-30, MAX( abs( pendval - pstartval ) , ABS( pinval - poutval ) ) )
 
-      WRITE(numicb,200) cd_budgetstr // ' budget:', &
+      IF(numicb.NE.-1) &
+         &        WRITE(numicb,200) cd_budgetstr // ' budget:',                     &
          &              cd_instr     // ' in',      pinval,         cd_budgetunits, &
          &              cd_outstr    // ' out',     poutval,        cd_budgetunits, &
@@ -554,5 +560,6 @@
       INTEGER,       INTENT(in) :: pstartval, pendval
       !
-      WRITE(numicb,100) cd_budgetstr // ' state:',           &
+      IF(numicb.NE.-1) &
+         &        WRITE(numicb,100) cd_budgetstr // ' state:',           &
          &              cd_startstr  // ' start', pstartval, &
          &              cd_endstr    // ' end',   pendval,   &
@@ -571,5 +578,6 @@
       !!----------------------------------------------------------------------
       !
-      WRITE(numicb,200) cd_budgetstr // ' budget:', &
+      IF(numicb.NE.-1) &
+         &        WRITE(numicb,200) cd_budgetstr // ' budget:', &
                         cd_instr     // ' in',      pinval, &
                         cd_outstr    // ' out',     poutval, &
Index: /branches/UKMO/dev_r5518_GO6_package_text_diagnostics/NEMOGCM/NEMO/OPA_SRC/ICB/icbdyn.F90
===================================================================
--- /branches/UKMO/dev_r5518_GO6_package_text_diagnostics/NEMOGCM/NEMO/OPA_SRC/ICB/icbdyn.F90	(revision 10752)
+++ /branches/UKMO/dev_r5518_GO6_package_text_diagnostics/NEMOGCM/NEMO/OPA_SRC/ICB/icbdyn.F90	(revision 10753)
@@ -372,7 +372,7 @@
       !                                      ! check the speed and acceleration limits
       IF( ABS( zuveln ) > pp_vel_lim   .OR. ABS( zvveln ) > pp_vel_lim   )   &
-         WRITE(numicb,'("pe=",i3,x,a)') narea,'Dump triggered by excessive velocity'
+         WRITE(*,'("pe=",i3,x,a)') narea,'Dump triggered by excessive velocity'
       IF( ABS( pax    ) > pp_accel_lim .OR. ABS( pay    ) > pp_accel_lim )   &
-         WRITE(numicb,'("pe=",i3,x,a)') narea,'Dump triggered by excessive acceleration'
+         WRITE(*,'("pe=",i3,x,a)') narea,'Dump triggered by excessive acceleration'
       !
    END SUBROUTINE icb_accel
Index: /branches/UKMO/dev_r5518_GO6_package_text_diagnostics/NEMOGCM/NEMO/OPA_SRC/ICB/icbini.F90
===================================================================
--- /branches/UKMO/dev_r5518_GO6_package_text_diagnostics/NEMOGCM/NEMO/OPA_SRC/ICB/icbini.F90	(revision 10752)
+++ /branches/UKMO/dev_r5518_GO6_package_text_diagnostics/NEMOGCM/NEMO/OPA_SRC/ICB/icbini.F90	(revision 10753)
@@ -78,5 +78,10 @@
       !                          ! note that we choose to do this on all processors since we cannot
       !                          ! predict where icebergs will be ahead of time
-      CALL ctl_opn( numicb, 'icebergs.stat', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp, narea )
+      numicb=-1
+      IF(nn_verbose_level>0 .AND. nprint>0) THEN
+        CALL ctl_opn( numicb, 'icebergs.stat', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp, narea )
+      ELSE
+        IF(lwp) CALL ctl_opn( numicb, 'icebergs.stat', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp, narea )
+      ENDIF
 
       ! set parameters (mostly from namelist)
@@ -187,5 +192,5 @@
       ENDIF
       !
-      IF( nn_verbose_level > 0) THEN
+      IF( nn_verbose_level > 0 .AND. numicb.NE.-1) THEN
          WRITE(numicb,*) 'processor ', narea
          WRITE(numicb,*) 'jpi, jpj   ', jpi, jpj
@@ -241,6 +246,8 @@
          CALL iom_close( inum )                                     ! close file
          !
-         WRITE(numicb,*)
-         WRITE(numicb,*) '          calving read in a file'
+         IF(numicb.NE.-1) THEN
+            WRITE(numicb,*)
+            WRITE(numicb,*) '          calving read in a file'
+         ENDIF
          ALLOCATE( sf_icb(1), STAT=istat1 )         ! Create sf_icb structure (calving)
          ALLOCATE( sf_icb(1)%fnow(jpi,jpj,1), STAT=istat2 )
@@ -336,5 +343,5 @@
       ibergs = icb_utl_count()
       IF( lk_mpp ) CALL mpp_sum(ibergs)
-      WRITE(numicb,'(a,i6,a)') 'diamonds, icb_ini_gen: ',ibergs,' were generated'
+      IF(numicb.NE.-1) WRITE(numicb,'(a,i6,a)') 'diamonds, icb_ini_gen: ',ibergs,' were generated'
       !
    END SUBROUTINE icb_ini_gen
@@ -368,5 +375,5 @@
       READ  ( numnam_cfg, namberg, IOSTAT = ios, ERR = 902 )
 902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namberg in configuration namelist', lwp )
-      IF(lwm) WRITE ( numond, namberg )
+      IF(lwm .AND. nprint>3) WRITE ( numond, namberg )
 #else
       IF(lwp) THEN
Index: /branches/UKMO/dev_r5518_GO6_package_text_diagnostics/NEMOGCM/NEMO/OPA_SRC/ICB/icblbc.F90
===================================================================
--- /branches/UKMO/dev_r5518_GO6_package_text_diagnostics/NEMOGCM/NEMO/OPA_SRC/ICB/icblbc.F90	(revision 10752)
+++ /branches/UKMO/dev_r5518_GO6_package_text_diagnostics/NEMOGCM/NEMO/OPA_SRC/ICB/icblbc.F90	(revision 10753)
@@ -197,5 +197,5 @@
       ENDIF
 
-      IF( nn_verbose_level >= 2 ) THEN
+      IF( nn_verbose_level >= 2 .AND. numicb .NE. -1) THEN
          WRITE(numicb,*) 'processor west  : ', ipe_W
          WRITE(numicb,*) 'processor east  : ', ipe_E
@@ -240,5 +240,5 @@
                this => this%next
                ibergs_to_send_e = ibergs_to_send_e + 1
-               IF( nn_verbose_level >= 4 ) THEN
+               IF( nn_verbose_level >= 4 .AND. numicb .NE. -1) THEN
                   WRITE(numicb,*) 'bergstep ',nktberg,' packing berg ',tmpberg%number(:),' for transfer to east'
                   CALL flush( numicb )
@@ -253,5 +253,5 @@
                this => this%next
                ibergs_to_send_w = ibergs_to_send_w + 1
-               IF( nn_verbose_level >= 4 ) THEN
+               IF( nn_verbose_level >= 4 .AND. numicb.NE.-1) THEN
                   WRITE(numicb,*) 'bergstep ',nktberg,' packing berg ',tmpberg%number(:),' for transfer to west'
                   CALL flush( numicb )
@@ -267,5 +267,5 @@
          END DO
       ENDIF
-      IF( nn_verbose_level >= 3) THEN
+      IF( nn_verbose_level >= 3 .AND. numicb .NE. -1) THEN
          WRITE(numicb,*) 'bergstep ',nktberg,' send ew: ', ibergs_to_send_e, ibergs_to_send_w
          CALL flush(numicb)
@@ -301,5 +301,5 @@
          ibergs_rcvd_from_w = INT( zwebergs(2) )
       END SELECT
-      IF( nn_verbose_level >= 3) THEN
+      IF( nn_verbose_level >= 3 .AND. numicb .NE. -1) THEN
          WRITE(numicb,*) 'bergstep ',nktberg,' recv ew: ', ibergs_rcvd_from_w, ibergs_rcvd_from_e
          CALL flush(numicb)
@@ -315,5 +315,5 @@
          IF( ibergs_to_send_e > 0 .AND. l_isend ) CALL mpi_wait( iml_req1, iml_stat, iml_err )
          DO i = 1, ibergs_rcvd_from_e
-            IF( nn_verbose_level >= 4 ) THEN
+            IF( nn_verbose_level >= 4 .AND. numicb .NE. -1) THEN
                WRITE(numicb,*) 'bergstep ',nktberg,' unpacking berg ',INT(ibuffer_e%data(16,i)),' from east'
                CALL flush( numicb )
@@ -335,5 +335,5 @@
          IF( ibergs_to_send_e > 0 .AND. l_isend ) CALL mpi_wait( iml_req3, iml_stat, iml_err )
          DO i = 1, ibergs_rcvd_from_e
-            IF( nn_verbose_level >= 4 ) THEN
+            IF( nn_verbose_level >= 4 .AND. numicb .NE. -1) THEN
                WRITE(numicb,*) 'bergstep ',nktberg,' unpacking berg ',INT(ibuffer_e%data(16,i)),' from east'
                CALL flush( numicb )
@@ -342,5 +342,5 @@
          END DO
          DO i = 1, ibergs_rcvd_from_w
-            IF( nn_verbose_level >= 4 ) THEN
+            IF( nn_verbose_level >= 4 .AND. numicb .NE. -1) THEN
                WRITE(numicb,*) 'bergstep ',nktberg,' unpacking berg ',INT(ibuffer_w%data(16,i)),' from west'
                CALL flush( numicb )
@@ -356,5 +356,5 @@
          IF( ibergs_to_send_w > 0 .AND. l_isend ) CALL mpi_wait( iml_req4, iml_stat, iml_err )
          DO i = 1, ibergs_rcvd_from_w
-            IF( nn_verbose_level >= 4 ) THEN
+            IF( nn_verbose_level >= 4 .AND. numicb .NE. -1) THEN
                WRITE(numicb,*) 'bergstep ',nktberg,' unpacking berg ',INT(ibuffer_w%data(16,i)),' from west'
                CALL flush( numicb )
@@ -378,5 +378,5 @@
                this => this%next
                ibergs_to_send_n = ibergs_to_send_n + 1
-               IF( nn_verbose_level >= 4 ) THEN
+               IF( nn_verbose_level >= 4 .AND. numicb .NE. -1) THEN
                   WRITE(numicb,*) 'bergstep ',nktberg,' packing berg ',tmpberg%number(:),' for transfer to north'
                   CALL flush( numicb )
@@ -388,5 +388,5 @@
                this => this%next
                ibergs_to_send_s = ibergs_to_send_s + 1
-               IF( nn_verbose_level >= 4 ) THEN
+               IF( nn_verbose_level >= 4 .AND. numicb .NE. -1) THEN
                   WRITE(numicb,*) 'bergstep ',nktberg,' packing berg ',tmpberg%number(:),' for transfer to south'
                   CALL flush( numicb )
@@ -399,5 +399,5 @@
          END DO
       ENDIF
-      if( nn_verbose_level >= 3) then
+      if( nn_verbose_level >= 3 .AND. numicb .NE. -1) then
          write(numicb,*) 'bergstep ',nktberg,' send ns: ', ibergs_to_send_n, ibergs_to_send_s
          call flush(numicb)
@@ -432,5 +432,5 @@
          ibergs_rcvd_from_s = INT( zsnbergs(2) )
       END SELECT
-      if( nn_verbose_level >= 3) then
+      if( nn_verbose_level >= 3 .AND. numicb .NE. -1) then
          write(numicb,*) 'bergstep ',nktberg,' recv ns: ', ibergs_rcvd_from_s, ibergs_rcvd_from_n
          call flush(numicb)
@@ -446,5 +446,5 @@
          IF( ibergs_to_send_n > 0 .AND. l_isend ) CALL mpi_wait( iml_req1, iml_stat, iml_err )
          DO i = 1, ibergs_rcvd_from_n
-            IF( nn_verbose_level >= 4 ) THEN
+            IF( nn_verbose_level >= 4 .AND. numicb .NE. -1) THEN
                WRITE(numicb,*) 'bergstep ',nktberg,' unpacking berg ',INT(ibuffer_n%data(16,i)),' from north'
                CALL flush( numicb )
@@ -466,5 +466,5 @@
          IF( ibergs_to_send_n > 0 .AND. l_isend ) CALL mpi_wait( iml_req3, iml_stat, iml_err )
          DO i = 1, ibergs_rcvd_from_n
-            IF( nn_verbose_level >= 4 ) THEN
+            IF( nn_verbose_level >= 4 .AND. numicb .NE. -1) THEN
                WRITE(numicb,*) 'bergstep ',nktberg,' unpacking berg ',INT(ibuffer_n%data(16,i)),' from north'
                CALL flush( numicb )
@@ -473,5 +473,5 @@
          END DO
          DO i = 1, ibergs_rcvd_from_s
-            IF( nn_verbose_level >= 4 ) THEN
+            IF( nn_verbose_level >= 4 .AND. numicb .NE. -1) THEN
                WRITE(numicb,*) 'bergstep ',nktberg,' unpacking berg ',INT(ibuffer_s%data(16,i)),' from south'
                CALL flush( numicb )
@@ -487,5 +487,5 @@
          IF( ibergs_to_send_s > 0 .AND. l_isend ) CALL mpi_wait( iml_req4, iml_stat, iml_err )
          DO i = 1, ibergs_rcvd_from_s
-            IF( nn_verbose_level >= 4 ) THEN
+            IF( nn_verbose_level >= 4 .AND. numicb .NE. -1) THEN
                WRITE(numicb,*) 'bergstep ',nktberg,' unpacking berg ',INT(ibuffer_s%data(16,i)),' from south'
                CALL flush( numicb )
@@ -495,5 +495,5 @@
       END SELECT
 
-      IF( nn_verbose_level > 0 ) THEN
+      IF( nn_verbose_level > 0 .AND. numicb .NE. -1) THEN
          ! compare the number of icebergs on this processor from the start to the end
          ibergs_end = icb_utl_count()
@@ -535,5 +535,5 @@
       IF( npolj /= 0 .AND. jpni > 1 ) CALL icb_lbc_mpp_nfld( )
 
-      IF( nn_verbose_level > 0 ) THEN
+      IF( nn_verbose_level > 0) THEN
          i = 0
          this => first_berg
@@ -547,8 +547,10 @@
                 ijne .GT. mjg(nicbej)) THEN
                i = i + 1
-               WRITE(numicb,*) 'berg lost in halo: ', this%number(:),iine,ijne
-               WRITE(numicb,*) '                   ', nimpp, njmpp
-               WRITE(numicb,*) '                   ', nicbdi, nicbei, nicbdj, nicbej
-               CALL flush( numicb )
+               IF(numicb .NE. -1) THEN
+                   WRITE(numicb,*) 'berg lost in halo: ', this%number(:),iine,ijne
+                   WRITE(numicb,*) '                   ', nimpp, njmpp
+                   WRITE(numicb,*) '                   ', nicbdi, nicbei, nicbdj, nicbej
+                   CALL flush( numicb )
+               ENDIF
             ENDIF
             this => this%next
@@ -659,5 +661,5 @@
              IF( nicbfldproc(jjn) .eq. INT(znbergs(1)) ) EXIT
             END DO
-            IF( jjn .GT. jpni ) write(numicb,*) 'ICB ERROR'
+            IF( jjn .GT. jpni ) write(*,*) 'ICB ERROR'
             nicbfldexpect(jjn) = INT( znbergs(2) )
             !IF ( nicbfldexpect(jjn) .GT. 0) write(numicb,*) 'ICB expecting ',nicbfldexpect(jjn),' from ', nicbfldproc(jjn)
@@ -714,5 +716,5 @@
                            tmpberg => this
                            ibergs_to_send = ibergs_to_send + 1
-                           IF( nn_verbose_level >= 4 ) THEN
+                           IF( nn_verbose_level >= 4 .AND. numicb.NE.-1) THEN
                               WRITE(numicb,*) 'bergstep ',nktberg,' packing berg ',tmpberg%number(:),' for north fold'
                               CALL flush( numicb )
@@ -727,5 +729,5 @@
                END DO
             ENDIF
-            if( nn_verbose_level >= 3) then
+            if( nn_verbose_level >= 3 .AND. numicb.NE.-1) then
                write(numicb,*) 'bergstep ',nktberg,' send nfld: ', ibergs_to_send
                call flush(numicb)
@@ -758,5 +760,5 @@
             !
             DO jk = 1, ibergs_to_rcv
-               IF( nn_verbose_level >= 4 ) THEN
+               IF( nn_verbose_level >= 4 .AND. numicb.NE.-1) THEN
                   WRITE(numicb,*) 'bergstep ',nktberg,' unpacking berg ',INT(ibuffer_f%data(16,jk)),' from north fold'
                   CALL flush( numicb )
Index: /branches/UKMO/dev_r5518_GO6_package_text_diagnostics/NEMOGCM/NEMO/OPA_SRC/ICB/icbrst.F90
===================================================================
--- /branches/UKMO/dev_r5518_GO6_package_text_diagnostics/NEMOGCM/NEMO/OPA_SRC/ICB/icbrst.F90	(revision 10752)
+++ /branches/UKMO/dev_r5518_GO6_package_text_diagnostics/NEMOGCM/NEMO/OPA_SRC/ICB/icbrst.F90	(revision 10753)
@@ -134,5 +134,5 @@
       ! Sanity check
       jn = icb_utl_count()
-      IF (nn_verbose_level >= 0)   &
+      IF (nprint > 0 .AND. lwp)   &
          WRITE(numout,'(2(a,i5))') 'icebergs, read_restart_bergs: # bergs =',jn,' on PE',narea-1
       IF( lk_mpp ) THEN
@@ -141,5 +141,6 @@
          CALL mpp_sum(jn)
       ENDIF
-      IF(lwp)   WRITE(numout,'(a,i5,a,i5,a)') 'icebergs, read_restart_bergs: there were',ibergs_in_file,   &
+      IF(lwp .AND. nprint > 1)   &
+         &    WRITE(numout,'(a,i5,a,i5,a)') 'icebergs, read_restart_bergs: there were',ibergs_in_file,   &
          &                                    ' bergs in the restart file and', jn,' bergs have been read'
       !
@@ -147,6 +148,6 @@
       CALL iom_close( ncid )
       !
-      IF(nn_timing == 2)  CALL timing_stop('iom_rstget')
-      IF( lwp .and. nn_verbose_level >= 0)  WRITE(numout,'(a)') 'icebergs, read_restart_bergs: completed'
+      IF(nn_timing == 1)  CALL timing_stop('iom_rstget')
+      IF( lwp .and. nprint >= 0)  WRITE(numout,'(a)') 'icebergs, read_restart_bergs: completed'
       !
    END SUBROUTINE icb_rst_read
@@ -190,5 +191,6 @@
          WRITE(cl_filename,'(A,"_icebergs_",A,"_restart.nc")') TRIM(cexper), TRIM(ADJUSTL(clkt))
       ENDIF
-      IF (nn_verbose_level >= 0) WRITE(numout,'(2a)') 'icebergs, write_restart: creating ',TRIM(cl_path)//TRIM(cl_filename)
+      IF (nprint > 0 .AND. lwp) &
+                       WRITE(numout,'(2a)') 'icebergs, write_restart: creating ',TRIM(cl_path)//TRIM(cl_filename)
 
       nret = NF90_CREATE(TRIM(cl_path)//TRIM(cl_filename), NF90_CLOBBER, ncid)
@@ -324,5 +326,5 @@
          ENDIF
       ENDDO
-      IF( lwp ) WRITE(numout,*) 'file: ',TRIM(cl_path)//TRIM(cl_filename),' var: stored_ice  written'
+      IF( lwp .AND. nprint > 1) WRITE(numout,*) 'file: ',TRIM(cl_path)//TRIM(cl_filename),' var: stored_ice  written'
 
       nret = NF90_PUT_VAR( ncid, nkountid, num_bergs(:) )
@@ -331,5 +333,5 @@
       nret = NF90_PUT_VAR( ncid, nsheatid, berg_grid%stored_heat(:,:) )
       IF (nret .ne. NF90_NOERR) CALL ctl_stop('icebergs, write_restart: nf_put_var stored_heat failed')
-      IF( lwp ) WRITE(numout,*) 'file: ',TRIM(cl_path)//TRIM(cl_filename),' var: stored_heat written'
+      IF( lwp .AND. nprint > 1) WRITE(numout,*) 'file: ',TRIM(cl_path)//TRIM(cl_filename),' var: stored_heat written'
 
       nret = NF90_PUT_VAR( ncid, ncalvid , src_calving(:,:) )
@@ -337,5 +339,5 @@
       nret = NF90_PUT_VAR( ncid, ncalvhid, src_calving_hflx(:,:) )
       IF (nret .ne. NF90_NOERR) CALL ctl_stop('icebergs, write_restart: nf_put_var calving_hflx failed')
-      IF( lwp ) WRITE(numout,*) 'file: ',TRIM(cl_path)//TRIM(cl_filename),' var: calving written'
+      IF( lwp .AND. nprint > 1) WRITE(numout,*) 'file: ',TRIM(cl_path)//TRIM(cl_filename),' var: calving written'
 
       IF ( ASSOCIATED(first_berg) ) THEN
Index: /branches/UKMO/dev_r5518_GO6_package_text_diagnostics/NEMOGCM/NEMO/OPA_SRC/ICB/icbstp.F90
===================================================================
--- /branches/UKMO/dev_r5518_GO6_package_text_diagnostics/NEMOGCM/NEMO/OPA_SRC/ICB/icbstp.F90	(revision 10752)
+++ /branches/UKMO/dev_r5518_GO6_package_text_diagnostics/NEMOGCM/NEMO/OPA_SRC/ICB/icbstp.F90	(revision 10753)
@@ -88,5 +88,5 @@
 
       ! write out time
-      IF( ll_verbose ) WRITE(numicb,9100) nktberg, ndastp, nsec_day
+      IF( ll_verbose .AND. numicb.NE.-1) WRITE(numicb,9100) nktberg, ndastp, nsec_day
  9100 FORMAT('kt= ',i8, ' day= ',i8,' secs=',i8)
 
@@ -166,7 +166,9 @@
       IF( nn_sample_rate .GT. 0 ) CALL icb_trj_end()
 
-      IF(lwp)   WRITE(numout,'(a,i6)') 'icebergs: icb_end complete', narea
-      CALL flush( numicb )
-      CLOSE( numicb )
+      IF(lwp .AND. nprint>3)   WRITE(numout,'(a,i6)') 'icebergs: icb_end complete', narea
+      IF(numicb.NE.-1) THEN
+         CALL flush( numicb )
+         CLOSE( numicb )
+      ENDIF
       !
    END SUBROUTINE icb_end
Index: /branches/UKMO/dev_r5518_GO6_package_text_diagnostics/NEMOGCM/NEMO/OPA_SRC/ICB/icbtrj.F90
===================================================================
--- /branches/UKMO/dev_r5518_GO6_package_text_diagnostics/NEMOGCM/NEMO/OPA_SRC/ICB/icbtrj.F90	(revision 10752)
+++ /branches/UKMO/dev_r5518_GO6_package_text_diagnostics/NEMOGCM/NEMO/OPA_SRC/ICB/icbtrj.F90	(revision 10753)
@@ -83,5 +83,5 @@
       ELSE                ;   WRITE(cl_filename,'("trajectory_icebergs_",A,"-",A         ,".nc")') TRIM(ADJUSTL(cldate_ini)), TRIM(ADJUSTL(cldate_end))
       ENDIF
-      IF ( lwp .AND. nn_verbose_level >= 0) WRITE(numout,'(2a)') 'icebergs, icb_trj_init: creating ',TRIM(cl_filename)
+      IF ( lwp .AND. nprint > 2) WRITE(numout,'(2a)') 'icebergs, icb_trj_init: creating ',TRIM(cl_filename)
 
       iret = NF90_CREATE(TRIM(cl_filename), NF90_CLOBBER, ntrajid)
@@ -246,5 +246,5 @@
          this=>this%next
       END DO
-      IF( lwp .and. nn_verbose_level > 0 ) WRITE(numout,*) 'trajectory write to frame ', jn
+      IF( lwp .AND. nprint > 0 ) WRITE(numout,*) 'trajectory write to frame ', jn
       num_traj = jn
       !
Index: /branches/UKMO/dev_r5518_GO6_package_text_diagnostics/NEMOGCM/NEMO/OPA_SRC/ICB/icbutl.F90
===================================================================
--- /branches/UKMO/dev_r5518_GO6_package_text_diagnostics/NEMOGCM/NEMO/OPA_SRC/ICB/icbutl.F90	(revision 10752)
+++ /branches/UKMO/dev_r5518_GO6_package_text_diagnostics/NEMOGCM/NEMO/OPA_SRC/ICB/icbutl.F90	(revision 10753)
@@ -661,8 +661,10 @@
       !
       pt => berg%current_point
+      IF(numicb.NE.-1) THEN
       WRITE(numicb, 9200) kt, berg%number(1), &
                    pt%xi, pt%yj, pt%lon, pt%lat, pt%uvel, pt%vvel,  &
                    pt%uo, pt%vo, pt%ua, pt%va, pt%ui, pt%vi
       CALL flush( numicb )
+      ENDIF
  9200 FORMAT(5x,i5,2x,i10,6(2x,2f10.4))
       !
@@ -685,8 +687,10 @@
       !
       this => first_berg
-      IF( ASSOCIATED(this) ) THEN
-         WRITE(numicb,'(a," pe=(",i3,")")' ) cd_label, narea
-         WRITE(numicb,'(a8,4x,a6,12x,a5,15x,a7,19x,a3,17x,a5,17x,a5,17x,a5)' )   &
+      IF(numicb.NE.-1) THEN
+         IF( ASSOCIATED(this) ) THEN
+            WRITE(numicb,'(a," pe=(",i3,")")' ) cd_label, narea
+            WRITE(numicb,'(a8,4x,a6,12x,a5,15x,a7,19x,a3,17x,a5,17x,a5,17x,a5)' )   &
             &         'timestep', 'number', 'xi,yj','lon,lat','u,v','uo,vo','ua,va','ui,vi'
+         ENDIF
       ENDIF
       DO WHILE( ASSOCIATED(this) )
@@ -697,5 +701,5 @@
       inbergs = ibergs
       IF( lk_mpp )   CALL mpp_sum(inbergs)
-      IF( ibergs > 0 )   WRITE(numicb,'(a," there are",i5," bergs out of",i6," on PE ",i4)')   &
+      IF( ibergs > 0 .AND. numicb.NE.-1)   WRITE(numicb,'(a," there are",i5," bergs out of",i6," on PE ",i4)')   &
          &                                  cd_label, ibergs, inbergs, narea
       !
