Index: /branches/UKMO/dev_r5518_MEDUSA_optim_RH/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90
===================================================================
--- /branches/UKMO/dev_r5518_MEDUSA_optim_RH/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90	(revision 7700)
+++ /branches/UKMO/dev_r5518_MEDUSA_optim_RH/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90	(revision 7701)
@@ -74,4 +74,5 @@
 #if defined key_top
    USE trcini          ! passive tracer initialisation
+   USE trc, ONLY: numstr  ! tracer stats unit number
 #endif
    USE lib_mpp         ! distributed memory computing
@@ -596,4 +597,5 @@
       IF( numdct_heat     /= -1 )   CLOSE( numdct_heat     )   ! heat transports
       IF( numdct_salt     /= -1 )   CLOSE( numdct_salt     )   ! salt transports
+      IF( numstr          /= -1 )   CLOSE( numstr          )   ! tracer statistics
 
       !
Index: /branches/UKMO/dev_r5518_MEDUSA_optim_RH/NEMOGCM/NEMO/TOP_SRC/trc.F90
===================================================================
--- /branches/UKMO/dev_r5518_MEDUSA_optim_RH/NEMOGCM/NEMO/TOP_SRC/trc.F90	(revision 7700)
+++ /branches/UKMO/dev_r5518_MEDUSA_optim_RH/NEMOGCM/NEMO/TOP_SRC/trc.F90	(revision 7701)
@@ -26,5 +26,5 @@
    INTEGER, PUBLIC                                                 ::   numnat_cfg = -1   !: logical unit for the reference passive tracer namelist_top_cfg
    INTEGER, PUBLIC                                                 ::   numont     = -1   !: logical unit for the reference passive tracer namelist output output.namelist.top
-   INTEGER, PUBLIC                                                 ::   numstr        !: logical unit for tracer statistics
+   INTEGER, PUBLIC                                                 ::   numstr     = -1   !: logical unit for tracer statistics
    INTEGER, PUBLIC                                                 ::   numrtr        !: logical unit for trc restart (read )
    INTEGER, PUBLIC                                                 ::   numrtw        !: logical unit for trc restart ( write )
Index: /branches/UKMO/dev_r5518_MEDUSA_optim_RH/NEMOGCM/NEMO/TOP_SRC/trcini.F90
===================================================================
--- /branches/UKMO/dev_r5518_MEDUSA_optim_RH/NEMOGCM/NEMO/TOP_SRC/trcini.F90	(revision 7700)
+++ /branches/UKMO/dev_r5518_MEDUSA_optim_RH/NEMOGCM/NEMO/TOP_SRC/trcini.F90	(revision 7701)
@@ -123,7 +123,13 @@
 # endif
 
-      IF( lwp ) THEN
+      IF( ln_ctl ) THEN
          !
-         CALL ctl_opn( numstr, 'tracer.stat', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp , narea )
+         IF (narea == 1) THEN 
+            ! The tracer.stat file only contains global tracer sum values, if
+            ! it contains anything at all. Hence it only needs to be opened
+            ! and written to on the master PE, not on all PEs. 
+            CALL ctl_opn( numstr, 'tracer.stat', 'REPLACE', 'FORMATTED',  &
+                          'SEQUENTIAL', -1, numout, lwp , narea )
+         ENDIF 
          !
       ENDIF
Index: /branches/UKMO/dev_r5518_MEDUSA_optim_RH/NEMOGCM/NEMO/TOP_SRC/trcstp.F90
===================================================================
--- /branches/UKMO/dev_r5518_MEDUSA_optim_RH/NEMOGCM/NEMO/TOP_SRC/trcstp.F90	(revision 7700)
+++ /branches/UKMO/dev_r5518_MEDUSA_optim_RH/NEMOGCM/NEMO/TOP_SRC/trcstp.F90	(revision 7701)
@@ -55,4 +55,7 @@
       !!              Update the passive tracers
       !!-------------------------------------------------------------------
+
+      USE dom_oce, ONLY: narea 
+
       INTEGER, INTENT( in ) ::  kt      ! ocean time-step index
       INTEGER               ::  jk, jn  ! dummy loop indices
@@ -136,10 +139,12 @@
          ! Hence we restrict its use by protecting it with the ln_ctl RTL
          ! which should normally only be used under debugging conditions
-         ! and not in operational runs. 
-         ztrai = 0._wp                                                   !  content of all tracers
+         ! and not in operational runs. We also need to restrict output 
+         ! to the master PE since there's no point duplicating the same results
+         ! on all processors.    
+         ztrai = 0._wp                                !  content of all tracers
          DO jn = 1, jptra
             ztrai = ztrai + glob_sum( trn(:,:,:,jn) * cvol(:,:,:)   )
          END DO
-         IF( lwp ) WRITE(numstr,9300) kt,  ztrai / areatot
+         IF (narea == 1) WRITE(numstr,9300) kt,  ztrai / areatot
 9300     FORMAT(i10,e18.10)
       ENDIF
