Index: trunk/NEMO/TOP_SRC/TRP/trcrad.F90
===================================================================
--- trunk/NEMO/TOP_SRC/TRP/trcrad.F90	(revision 1256)
+++ trunk/NEMO/TOP_SRC/TRP/trcrad.F90	(revision 1257)
@@ -15,5 +15,4 @@
    USE oce_trc             ! ocean dynamics and tracers variables
    USE trp_trc             ! ocean passive tracers variables
-   USE trctrp_lec , ONLY : ln_trcadv_tvd, ln_trcadv_cen2
    USE trdmld_trc
    USE trdmld_trc_oce
@@ -24,5 +23,5 @@
    PRIVATE
 
-   PUBLIC trc_rad        ! routine called by trcstp.F90
+   PUBLIC trc_rad         ! routine called by trcstp.F90
 
    !! * Substitutions
@@ -61,8 +60,9 @@
       ENDIF
 
-      IF( lk_cfc     )   CALL trc_rad_sms( kt, trb, trn, jp_cfc0, jp_cfc1               ) ! CFC model
-      IF( lk_lobster )   CALL trc_rad_sms( kt, trb, trn, jp_lob0, jp_lob1, cpreserv='Y' )  ! LOBSTER model
-      IF( lk_pisces  )   CALL trc_rad_sms( kt, trb, trn, jp_pcs0, jp_pcs1, cpreserv='Y' )  ! PISCES model
-      IF( lk_my_trc  )   CALL trc_rad_sms( kt, trb, trn, jp_myt0, jp_myt1               ) ! MY_TRC model
+      IF( lk_cfc     )   CALL trc_rad_sms( kt, trb, trn, jp_cfc0 , jp_cfc1               )  ! CFC model
+      IF( lk_c14b    )   CALL trc_rad_sms( kt, trb, trn, jp_c14b0, jp_c14b1              )  ! bomb C14
+      IF( lk_lobster )   CALL trc_rad_sms( kt, trb, trn, jp_lob0 , jp_lob1, cpreserv='Y' )  ! LOBSTER model
+      IF( lk_pisces  )   CALL trc_rad_sms( kt, trb, trn, jp_pcs0 , jp_pcs1, cpreserv='Y' )  ! PISCES model
+      IF( lk_my_trc  )   CALL trc_rad_sms( kt, trb, trn, jp_myt0 , jp_myt1               )  ! MY_TRC model
 
 
@@ -110,4 +110,5 @@
       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::   ztrtrdb  ! workspace arrays
       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::   ztrtrdn  ! workspace arrays
+      REAL(wp) :: zs2rdt
       LOGICAL ::   lldebug = .FALSE.
 
@@ -137,15 +138,13 @@
                DO jj = 1, jpj
                   DO ji = 1, jpi
-                     zvolk  = e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk)   &
+                     zvolk  = cvol(ji,jj,jk)
 # if defined key_off_degrad
-                        &   * facvol(ji,jj,jk)   &
+                     zvolk  = zvolk * facvol(ji,jj,jk)
 # endif
-                        &   * tmask(ji,jj,jk) * tmask_i(ji,jj)
-
-                     ztrcorb = ztrcorb + MIN( 0., ptrb(ji,jj,jk,jn) )  * zvolk
-                     ztrcorn = ztrcorn + MIN( 0., ptrn(ji,jj,jk,jn) )  * zvolk
-
-                     ptrb(ji,jj,jk,jn) = MAX( 0. , ptrb(ji,jj,jk,jn) )
-                     ptrn(ji,jj,jk,jn) = MAX( 0. , ptrn(ji,jj,jk,jn) )
+                     ztrcorb = ztrcorb + MIN( 0., ptrb(ji,jj,jk,jn) ) * zvolk
+                     ztrcorn = ztrcorn + MIN( 0., ptrn(ji,jj,jk,jn) ) * zvolk
+
+                     ptrb(ji,jj,jk,jn) = MAX( 0., ptrb(ji,jj,jk,jn) )
+                     ptrn(ji,jj,jk,jn) = MAX( 0., ptrn(ji,jj,jk,jn) )
 
                      ztrmasb = ztrmasb + ptrb(ji,jj,jk,jn) * zvolk
@@ -178,6 +177,7 @@
             IF( l_trdtrc ) THEN
                !
-               ztrtrdb(:,:,:) = ( ptrb(:,:,:,jn) - ztrtrdb(:,:,:) ) / (2.*rdt)
-               ztrtrdn(:,:,:) = ( ptrn(:,:,:,jn) - ztrtrdn(:,:,:) ) / (2.*rdt)
+               zs2rdt = 1. / ( 2. * rdt )
+               ztrtrdb(:,:,:) = ( ptrb(:,:,:,jn) - ztrtrdb(:,:,:) ) * zs2rdt
+               ztrtrdn(:,:,:) = ( ptrn(:,:,:,jn) - ztrtrdn(:,:,:) ) * zs2rdt 
                IF (luttrd(jn)) CALL trd_mod_trc( ztrtrdb, jn, jptrc_trd_radb, kt )       ! Asselin-like trend handling
                IF (luttrd(jn)) CALL trd_mod_trc( ztrtrdn, jn, jptrc_trd_radn, kt )       ! standard     trend handling
@@ -191,4 +191,10 @@
 
          DO jn = jp_sms0, jp_sms1  
+
+           IF( l_trdtrc ) THEN
+              ztrtrdb(:,:,:) = ptrb(:,:,:,jn)                        ! save input trb for trend computation
+              ztrtrdn(:,:,:) = ptrn(:,:,:,jn)                        ! save input trn for trend computation
+           ENDIF
+
             DO jk = 1, jpkm1
                DO jj = 1, jpj
@@ -199,5 +205,16 @@
                END DO
             END DO
-         END DO
+         
+            IF( l_trdtrc ) THEN
+               !
+               zs2rdt = 1. / ( 2. * rdt * FLOAT(ndttrc) )
+               ztrtrdb(:,:,:) = ( ptrb(:,:,:,jn) - ztrtrdb(:,:,:) ) * zs2rdt
+               ztrtrdn(:,:,:) = ( ptrn(:,:,:,jn) - ztrtrdn(:,:,:) ) * zs2rdt 
+               IF (luttrd(jn)) CALL trd_mod_trc( ztrtrdb, jn, jptrc_trd_radb, kt )       ! Asselin-like trend handling
+               IF (luttrd(jn)) CALL trd_mod_trc( ztrtrdn, jn, jptrc_trd_radn, kt )       ! standard     trend handling
+              !
+            ENDIF
+            !
+         ENDDO
 
       ENDIF
