Index: /NEMO/trunk/src/TOP/PISCES/P4Z/p4zsbc.F90
===================================================================
--- /NEMO/trunk/src/TOP/PISCES/P4Z/p4zsbc.F90	(revision 10787)
+++ /NEMO/trunk/src/TOP/PISCES/P4Z/p4zsbc.F90	(revision 10788)
@@ -27,5 +27,4 @@
    LOGICAL , PUBLIC ::   ln_ironsed   !: boolean for Fe input from sediments
    LOGICAL , PUBLIC ::   ln_hydrofe   !: boolean for Fe input from hydrothermal vents
-   LOGICAL , PUBLIC ::   ln_ironice   !: boolean for Fe input from sea ice
    REAL(wp), PUBLIC ::   sedfeinput   !: Coastal release of Iron
    REAL(wp), PUBLIC ::   dustsolub    !: Solubility of the dust
@@ -109,7 +108,5 @@
          IF( kt == nit000 .OR. ( kt /= nit000 .AND. ntimes_dust > 1 ) ) THEN
             CALL fld_read( kt, 1, sf_dust )
-            IF( nn_ice_tr == -1 .AND. .NOT.ln_ironice ) THEN   ;   dust(:,:) = MAX( rtrn, sf_dust(1)%fnow(:,:,1) )
-            ELSE                                               ;   dust(:,:) = MAX( rtrn, sf_dust(1)%fnow(:,:,1) * ( 1.-fr_i(:,:) ) )
-            ENDIF
+            dust(:,:) = MAX( rtrn, sf_dust(1)%fnow(:,:,1) ) * ( 1.0 - fr_i(ji,jj) )
          ENDIF
       ENDIF
@@ -265,13 +262,4 @@
       END IF
 
-      IF( nn_ice_tr >= 0 .AND. ln_ironice ) THEN
-         IF(lwp) THEN
-            WRITE(numout,*) '   ==>>>   ln_ironice incompatible with nn_ice_tr = ', nn_ice_tr
-            WRITE(numout,*) '           Specify your sea ice iron concentration in nampisice instead '
-            WRITE(numout,*) '           ln_ironice is forced to .FALSE. '
-         ENDIF
-         ln_ironice = .FALSE.
-      ENDIF
-
       IF( ln_dust .OR. ln_river .OR. ln_ndepo ) THEN   ;   ll_sbc = .TRUE.
       ELSE                                             ;   ll_sbc = .FALSE.
Index: /NEMO/trunk/src/TOP/PISCES/P4Z/p4zsed.F90
===================================================================
--- /NEMO/trunk/src/TOP/PISCES/P4Z/p4zsed.F90	(revision 10787)
+++ /NEMO/trunk/src/TOP/PISCES/P4Z/p4zsed.F90	(revision 10788)
@@ -53,6 +53,5 @@
       INTEGER  ::  ji, jj, jk, ikt
       REAL(wp) ::  zrivalk, zrivsil, zrivno3
-      REAL(wp) ::  zwflux, zfminus, zfplus
-      REAL(wp) ::  zlim, zfact, zfactcal
+      REAL(wp) ::  zwflux, zlim, zfact, zfactcal
       REAL(wp) ::  zo2, zno3, zflx, zpdenit, z1pdenit, zolimit
       REAL(wp) ::  zsiloss, zcaloss, zws3, zws4, zwsc, zdep
@@ -104,7 +103,5 @@
                zdep    = rfact2 / e3t_n(ji,jj,1)
                zwflux  = fmmflx(ji,jj) / 1000._wp
-               zfminus = MIN( 0._wp, -zwflux ) * trb(ji,jj,1,jpfer) * zdep
-               zfplus  = MAX( 0._wp, -zwflux ) * icefeinput * zdep
-               zironice(ji,jj) =  zfplus + zfminus
+               zironice(ji,jj) =  MAX( -0.99 * trb(ji,jj,1,jpfer), -zwflux * icefeinput * zdep )
             END DO
          END DO
Index: /NEMO/trunk/src/TOP/PISCES/sms_pisces.F90
===================================================================
--- /NEMO/trunk/src/TOP/PISCES/sms_pisces.F90	(revision 10787)
+++ /NEMO/trunk/src/TOP/PISCES/sms_pisces.F90	(revision 10788)
@@ -67,4 +67,5 @@
    !!* Mass conservation
    LOGICAL  ::  ln_check_mass      !: Flag to check mass conservation
+   LOGICAL , PUBLIC ::   ln_ironice   !: boolean for Fe input from sea ice
 
    !!*  Biological fluxes for light : variables shared by pisces & lobster
Index: /NEMO/trunk/src/TOP/PISCES/trcice_pisces.F90
===================================================================
--- /NEMO/trunk/src/TOP/PISCES/trcice_pisces.F90	(revision 10787)
+++ /NEMO/trunk/src/TOP/PISCES/trcice_pisces.F90	(revision 10788)
@@ -266,5 +266,17 @@
       zpisc(jpgon,4) =  1.05e-8_wp
       zpisc(jpgop,4) =  1.05e-8_wp
- 
+!
+!     ln_ironice and tracers in seaice are redundant. Thus, if tracers in ice
+!     is activated, ln_ironice should be set to false
+!     ------------------------------------------------------------------------
+      IF( nn_ice_tr >= 0 .AND. ln_ironice ) THEN
+         IF(lwp) THEN
+            WRITE(numout,*) '   ==>>>   ln_ironice incompatible with nn_ice_tr = ', nn_ice_tr
+            WRITE(numout,*) '           Specify your sea ice iron concentration in nampisice instead '
+            WRITE(numout,*) '           ln_ironice is forced to .FALSE. '
+         ENDIF
+         ln_ironice = .FALSE.
+      ENDIF
+! 
       DO jn = jp_pcs0, jp_pcs1
          IF( cn_trc_o(jn) == 'GL ' ) trc_o(:,:,jn) = zpisc(jn,1)  ! Global case
@@ -310,5 +322,4 @@
             trc_i(:,:,jn) = trc_ice_prescr(jn)
          ENDIF
-       
          !-- Baltic
          IF( cn_cfg == "orca" .OR. cn_cfg == "ORCA" ) THEN     
@@ -318,10 +329,5 @@
                      trc_i(:,:,jn) = zratio(jn,2) * trc_o(:,:,jn) 
                END WHERE
-            ELSE                                 ! prescribed tracer concentration in ice
-               WHERE( 14._wp <= glamt(:,:) .AND. glamt(:,:) <= 32._wp .AND.    &
-                   54._wp <= gphit(:,:) .AND. gphit(:,:) <= 66._wp )
-                     trc_i(:,:,jn) = trc_ice_prescr(jn)
-               END WHERE
-            ENDIF ! trc_ice_ratio
+            ENDIF
          ENDIF
       !
Index: /NEMO/trunk/src/TOP/TRP/trcsbc.F90
===================================================================
--- /NEMO/trunk/src/TOP/TRP/trcsbc.F90	(revision 10787)
+++ /NEMO/trunk/src/TOP/TRP/trcsbc.F90	(revision 10788)
@@ -61,6 +61,6 @@
       !
       INTEGER  ::   ji, jj, jn                      ! dummy loop indices
-      REAL(wp) ::   zse3t, zrtrn, zratio, zfact     ! local scalars
-      REAL(wp) ::   zftra, zcd, zdtra, ztfx, ztra   !   -      -
+      REAL(wp) ::   zse3t, zrtrn, zfact     ! local scalars
+      REAL(wp) ::   zftra, zdtra, ztfx, ztra   !   -      -
       CHARACTER (len=22) :: charout
       REAL(wp), DIMENSION(jpi,jpj)   ::   zsfx
@@ -113,5 +113,7 @@
 
       ! 0. initialization
-      IF( nn_ice_tr == -1 ) THEN    ! No tracers in sea ice (null concentration in sea ice)
+      SELECT CASE ( nn_ice_tr )
+
+      CASE ( -1 ) ! No tracers in sea ice (null concentration in sea ice)
          !
          DO jn = 1, jptra
@@ -123,5 +125,15 @@
          END DO
          !
-       ELSE
+      CASE ( 0 )  ! Same concentration in sea ice and in the ocean
+         !
+         DO jn = 1, jptra
+            DO jj = 2, jpj
+               DO ji = fs_2, fs_jpim1   ! vector opt.
+                  sbc_trc(ji,jj,jn) = ( zsfx(ji,jj) + fmmflx(ji,jj) ) * r1_rau0 * trn(ji,jj,1,jn)
+               END DO
+            END DO
+         END DO
+         !
+      CASE ( 1 )  ! Specific treatment of sea ice fluxes with an imposed concentration in sea ice 
          !
          DO jn = 1, jptra
@@ -131,14 +143,12 @@
                   ! tracer flux at the ice/ocean interface (tracer/m2/s)
                   zftra = - trc_i(ji,jj,jn) * fmmflx(ji,jj) ! uptake of tracer in the sea ice
-                  zcd   =   trc_o(ji,jj,jn) * fmmflx(ji,jj) ! concentration dilution due to freezing-melting,
                   !                                         ! only used in the levitating sea ice case
                   ! tracer flux only       : add concentration dilution term in net tracer flux, no F-M in volume flux
                   ! tracer and mass fluxes : no concentration dilution term in net tracer flux, F-M term in volume flux
-                  ztfx  = zftra                             ! net tracer flux
+                  ztfx  = zftra                        ! net tracer flux
                   !
-                  zdtra = r1_rau0 * ( ztfx + zsfx(ji,jj) * trn(ji,jj,1,jn) ) 
+                  zdtra = r1_rau0 * ( ztfx + ( zsfx(ji,jj) + fmmflx(ji,jj) ) * trn(ji,jj,1,jn) ) 
                   IF ( zdtra < 0. ) THEN
-                     zratio = -zdtra * zse3t * r2dttrc / ( trn(ji,jj,1,jn) + zrtrn )
-                     zdtra = MIN(1.0, zratio) * zdtra ! avoid negative concentrations to arise
+                     zdtra  = MAX(zdtra, -trn(ji,jj,1,jn) * e3t_n(ji,jj,1) / r2dttrc )   ! avoid negative concentrations to arise
                   ENDIF
                   sbc_trc(ji,jj,jn) =  zdtra 
@@ -146,5 +156,5 @@
             END DO
          END DO
-      ENDIF
+      END SELECT
       !
       CALL lbc_lnk( 'trcsbc', sbc_trc(:,:,:), 'T', 1. )
Index: /NEMO/trunk/src/TOP/TRP/trcsink.F90
===================================================================
--- /NEMO/trunk/src/TOP/TRP/trcsink.F90	(revision 10787)
+++ /NEMO/trunk/src/TOP/TRP/trcsink.F90	(revision 10788)
@@ -81,5 +81,5 @@
             END DO
          END DO
-         iiter(ji,jj) = MIN( iiter(ji,jj), nitermax )
+         iiter(:,:) = MIN( iiter(:,:), nitermax )
       ENDIF
 
