diff --git a/src/MNH/write_lbn.f90 b/src/MNH/write_lbn.f90
index 66e791e5fd33e3fba791bc80843abadba7c56be4..3f2304d869ea5e5133dceb252a4504919fc4a40d 100644
--- a/src/MNH/write_lbn.f90
+++ b/src/MNH/write_lbn.f90
@@ -131,7 +131,7 @@ TYPE(TFILEDATA),   INTENT(IN) :: TPFILE ! File characteristics
 !
 !*       0.2   Declarations of local variables
 !
-INTEGER           :: ILUOUT         ! logical unit
+INTEGER            :: ILUOUT        ! logical unit
 INTEGER            :: IRESP         ! IRESP  : return-code for fmwrit
 INTEGER            :: IGRID         ! IGRID : grid indicator
 CHARACTER (LEN=2)  :: YDIR          ! Type of the data field
@@ -149,12 +149,12 @@ CHARACTER (LEN=1), DIMENSION (7) :: YC    ! array with the prefix of the moist v
 LOGICAL, DIMENSION (7)           :: GUSER ! array with the use indicator of the moist variables
 REAL,    DIMENSION(SIZE(XLBXSVM, 1), SIZE(XLBXSVM,2), SIZE(XLBXSVM,3)) :: ZRHODREFX
 REAL,    DIMENSION(SIZE(XLBYSVM, 1), SIZE(XLBYSVM,2), SIZE(XLBYSVM,3)) :: ZRHODREFY
-INTEGER  :: JK
+INTEGER            :: JK
 !         Integers, counters for dust modes
-INTEGER                          :: JMOM, IMOMENTS, JMODE, ISV_NAME_IDX
-INTEGER :: IMI ! Current model index
-CHARACTER(LEN=2)  :: INDICE ! to index CCN and IFN fields of LIMA scheme
-TYPE(TFIELDDATA)  :: TZFIELD
+INTEGER            :: JMOM, IMOMENTS, JMODE, ISV_NAME_IDX
+INTEGER            :: IMI    ! Current model index
+CHARACTER(LEN=2)   :: INDICE ! to index CCN and IFN fields of LIMA scheme
+TYPE(TFIELDDATA)   :: TZFIELD
 !-------------------------------------------------------------------------------
 !
 !*       1.    SOME INITIALIZATIONS
@@ -210,30 +210,31 @@ IF (NRR >=1) THEN
   GHORELAX_R = LHORELAX_RV .OR. LHORELAX_RC .OR. LHORELAX_RR .OR. &
                LHORELAX_RI .OR. LHORELAX_RS .OR. LHORELAX_RG .OR. &
                LHORELAX_RH
-!
+  !
   TZFIELD%CMNHNAME   = 'HORELAX_R'
   TZFIELD%CSTDNAME   = ''
   TZFIELD%CLONGNAME  = 'MesoNH: HORELAX_R'
   TZFIELD%CUNITS     = ''
   TZFIELD%CDIR       = '--'
   TZFIELD%CCOMMENT   = 'Switch to activate the HOrizontal RELAXation'
+  TZFIELD%CLBTYPE    = 'NONE'
   TZFIELD%NGRID      = 1
   TZFIELD%NTYPE      = TYPELOG
   TZFIELD%NDIMS      = 0
-!
+  !
   CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,GHORELAX_R)
-!
+  !
   GUSER(:)=(/LUSERV,LUSERC,LUSERR,LUSERI,LUSERS,LUSERG,LUSERH/)
   YC(:)=(/"V","C","R","I","S","G","H"/)
   IRR=0
-!
+  !
   TZFIELD%CSTDNAME   = ''
   TZFIELD%CUNITS     = 'kg kg-1'
-  TZFIELD%CDIR       = '--'
+  TZFIELD%CDIR       = 'XY'
   TZFIELD%NGRID      = 1
   TZFIELD%NTYPE      = TYPEREAL
   TZFIELD%NDIMS      = 3
-! Loop on moist variables
+  ! Loop on moist variables
   DO JRR=1,7
     IF (GUSER(JRR)) THEN
       IRR=IRR+1 
@@ -244,7 +245,7 @@ IF (NRR >=1) THEN
         TZFIELD%CCOMMENT   = '2_Y_Z_LBXR'//YC(JRR)//'M'
         CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBXR_ll,IRESP,XLBXRM(:,:,:,IRR))
       END IF
-!
+      !
       IF(NSIZELBYR_ll /= 0) THEN
         TZFIELD%CMNHNAME   = 'LBYR'//YC(JRR)//'M'
         TZFIELD%CLONGNAME  = 'MesoNH: LBYR'//YC(JRR)//'M'
@@ -256,12 +257,10 @@ IF (NRR >=1) THEN
   END DO
 END IF
 !
-TZFIELD%CLBTYPE = 'NONE' !Just to be careful
 !
 !*        7  LB-SV
 !            -----
 !
-
 IF (NSV >=1) THEN
   GHORELAX_SV=ANY ( LHORELAX_SV )
 !
@@ -271,6 +270,7 @@ IF (NSV >=1) THEN
   TZFIELD%CUNITS     = ''
   TZFIELD%CDIR       = '--'
   TZFIELD%CCOMMENT   = ''
+  TZFIELD%CLBTYPE    = 'NONE'
   TZFIELD%NGRID      = 0
   TZFIELD%NTYPE      = TYPELOG
   TZFIELD%NDIMS      = 0
@@ -279,81 +279,93 @@ IF (NSV >=1) THEN
   IGRID=1
   IRIMX =(NSIZELBXSV_ll-2*JPHEXT)/2
   IRIMY =(NSIZELBYSV_ll-2*JPHEXT)/2
-  DO JSV = 1,NSV_USER
-    IF(NSIZELBXSV_ll /= 0) THEN
-      WRITE(TZFIELD%CMNHNAME,'(A6,I3.3)')'LBXSVM',JSV
-      TZFIELD%CSTDNAME   = ''
-      TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
-      TZFIELD%CLBTYPE    = 'LBX'
-      TZFIELD%CUNITS     = 'kg kg-1'
-      TZFIELD%CDIR       = '--'
-      WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV
-      TZFIELD%NGRID      = 1
-      TZFIELD%NTYPE      = TYPEREAL
-      TZFIELD%NDIMS      = 3
-      CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBXSV_ll,IRESP,XLBXSVM(:,:,:,JSV))
-    END IF
-!
-    IF(NSIZELBYSV_ll /= 0) THEN
-      WRITE(YRECFM,'(A6,I3.3)')'LBYSVM',JSV
-      WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)'
-      ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
-           & IGRID,ILENCH,YCOMMENT,IRESP)
-    END IF
-  END DO
+  IF (NSV_USER>0) THEN
+    TZFIELD%CSTDNAME   = ''
+    TZFIELD%CUNITS     = 'kg kg-1'
+    TZFIELD%CDIR       = 'XY'
+    TZFIELD%NGRID      = 1
+    TZFIELD%NTYPE      = TYPEREAL
+    TZFIELD%NDIMS      = 3
+    !
+    DO JSV = 1,NSV_USER
+      IF(NSIZELBXSV_ll /= 0) THEN
+        WRITE(TZFIELD%CMNHNAME,'(A6,I3.3)')'LBXSVM',JSV
+        TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
+        TZFIELD%CLBTYPE    = 'LBX'
+        WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV
+        CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBXSV_ll,IRESP,XLBXSVM(:,:,:,JSV))
+      END IF
+      !
+      IF(NSIZELBYSV_ll /= 0) THEN
+        WRITE(TZFIELD%CMNHNAME,'(A6,I3.3)')'LBYSVM',JSV
+        TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
+        TZFIELD%CLBTYPE    = 'LBY'
+        WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV
+        CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBYSV_ll,IRESP,XLBYSVM(:,:,:,JSV))
+      END IF
+    END DO
+  END IF
   !
   IF (NSV_C2R2END>=NSV_C2R2BEG) THEN
     TZFIELD%CSTDNAME   = ''
     TZFIELD%CUNITS     = 'm-3'
-    TZFIELD%CDIR       = '--'
+    TZFIELD%CDIR       = 'XY'
     TZFIELD%NGRID      = 1
     TZFIELD%NTYPE      = TYPEREAL
     TZFIELD%NDIMS      = 3
     !
     DO JSV = NSV_C2R2BEG,NSV_C2R2END
       IF(NSIZELBXSV_ll /= 0) THEN
-        TZFIELD%CLBTYPE    = 'LBX'
         TZFIELD%CMNHNAME   = 'LBX_'//TRIM(C2R2NAMES(JSV-NSV_C2R2BEG+1))
         TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
+        TZFIELD%CLBTYPE    = 'LBX'
         WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'2_Y_Z_','LBXSVM',JSV
         CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBXSV_ll,IRESP,XLBXSVM(:,:,:,JSV))
       END IF
       !
       IF(NSIZELBYSV_ll /= 0) THEN
-        TZFIELD%CLBTYPE    = 'LBY'
         TZFIELD%CMNHNAME   = 'LBY_'//TRIM(C2R2NAMES(JSV-NSV_C2R2BEG+1))
         TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
+        TZFIELD%CLBTYPE    = 'LBY'
         WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'X_2_Z_','LBYSVM',JSV
         CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBYSV_ll,IRESP,XLBYSVM(:,:,:,JSV))
       END IF
     END DO
   END IF
   !
-  DO JSV = NSV_C1R3BEG,NSV_C1R3END
-    IF(NSIZELBXSV_ll /= 0) THEN
-      YRECFM='LBX_'//TRIM(C1R3NAMES(JSV-NSV_C1R3BEG+1))
-      WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (/M3)'  
-      ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
-           & IGRID,ILENCH,YCOMMENT,IRESP)
-    END IF
-!
-    IF(NSIZELBYSV_ll /= 0) THEN
-      YRECFM='LBY_'//TRIM(C1R3NAMES(JSV-NSV_C1R3BEG+1))
-      WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (/M3)'  
-      ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
-           & IGRID,ILENCH,YCOMMENT,IRESP)
-    END IF
-  END DO
+  IF (NSV_C1R3END>=NSV_C1R3BEG) THEN
+    TZFIELD%CSTDNAME   = ''
+    TZFIELD%CUNITS     = 'm-3'
+    TZFIELD%CDIR       = 'XY'
+    TZFIELD%NGRID      = 1
+    TZFIELD%NTYPE      = TYPEREAL
+    TZFIELD%NDIMS      = 3
+    !
+    DO JSV = NSV_C1R3BEG,NSV_C1R3END
+      IF(NSIZELBXSV_ll /= 0) THEN
+        TZFIELD%CMNHNAME   = 'LBX_'//TRIM(C1R3NAMES(JSV-NSV_C1R3BEG+1))
+        TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
+        TZFIELD%CLBTYPE    = 'LBX'
+        WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'2_Y_Z_','LBXSVM',JSV
+        CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBXSV_ll,IRESP,XLBXSVM(:,:,:,JSV))
+      END IF
+      !
+      IF(NSIZELBYSV_ll /= 0) THEN
+        TZFIELD%CMNHNAME   = 'LBY_'//TRIM(C1R3NAMES(JSV-NSV_C1R3BEG+1))
+        TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
+        TZFIELD%CLBTYPE    = 'LBY'
+        WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'X_2_Z_','LBYSVM',JSV
+        CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBYSV_ll,IRESP,XLBYSVM(:,:,:,JSV))
+      END IF
+    END DO
+  END IF
 !
 ! LIMA: CCN and IFN scalar variables
 !
   IF (CCLOUD=='LIMA' ) THEN
     TZFIELD%CSTDNAME   = ''
     TZFIELD%CUNITS     = 'kg-1'
-    TZFIELD%CDIR       = '--'
+    TZFIELD%CDIR       = 'XY'
     TZFIELD%NGRID      = 1
     TZFIELD%NTYPE      = TYPEREAL
     TZFIELD%NDIMS      = 3
@@ -367,7 +379,7 @@ IF (NSV >=1) THEN
         WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'2_Y_Z_','LBXSVM',JSV
         CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBXSV_ll,IRESP,XLBXSVM(:,:,:,JSV))
       END IF
-!
+      !
       IF(NSIZELBYSV_ll /= 0) THEN
         TZFIELD%CMNHNAME   = 'LBY_'//TRIM(UPCASE(CLIMA_WARM_NAMES(3))//INDICE)
         TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
@@ -376,7 +388,7 @@ IF (NSV >=1) THEN
         CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBYSV_ll,IRESP,XLBYSVM(:,:,:,JSV))
       END IF
     END DO
-!
+    !
     DO JSV = NSV_LIMA_IFN_FREE,NSV_LIMA_IFN_FREE+NMOD_IFN-1
       WRITE(INDICE,'(I2.2)')(JSV - NSV_LIMA_IFN_FREE + 1)
       IF(NSIZELBXSV_ll /= 0) THEN
@@ -386,7 +398,7 @@ IF (NSV >=1) THEN
         WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'2_Y_Z_','LBXSVM',JSV
         CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBXSV_ll,IRESP,XLBXSVM(:,:,:,JSV))
       END IF
-!
+      !
       IF(NSIZELBYSV_ll /= 0) THEN
         TZFIELD%CMNHNAME   = 'LBY_'//TRIM(UPCASE(CLIMA_COLD_NAMES(2))//INDICE)
         TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
@@ -402,7 +414,7 @@ IF (NSV >=1) THEN
   IF (NSV_ELECEND>=NSV_ELECBEG) THEN
     TZFIELD%CSTDNAME   = ''
     TZFIELD%CUNITS     = 'kg kg-1'
-    TZFIELD%CDIR       = '--'
+    TZFIELD%CDIR       = 'XY'
     TZFIELD%NGRID      = 1
     TZFIELD%NTYPE      = TYPEREAL
     TZFIELD%NDIMS      = 3
@@ -415,7 +427,7 @@ IF (NSV >=1) THEN
         WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'2_Y_Z_','LBXSVM',JSV
         CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBXSV_ll,IRESP,XLBXSVM(:,:,:,JSV))
       END IF
-!
+      !
       IF(NSIZELBYSV_ll /= 0) THEN
         TZFIELD%CMNHNAME   = 'LBY_'//TRIM(CELECNAMES(JSV-NSV_ELECBEG+1))
         TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
@@ -452,51 +464,52 @@ IF (NSV >=1) THEN
       CALL CH_AER_REALLFI_n(XLBYSVM(:,:,:,NSV_AERBEG:NSV_AEREND),XLBYSVM(:,:,:,NSV_CHEMBEG-1+JP_CH_CO),ZRHODREFY)
     END IF
     !
+    TZFIELD%CSTDNAME   = ''
+    TZFIELD%CUNITS     = 'kg kg-1'
+    TZFIELD%CDIR       = 'XY'
+    TZFIELD%NGRID      = 1
+    TZFIELD%NTYPE      = TYPEREAL
+    TZFIELD%NDIMS      = 3
+    !
     DO JSV = NSV_AERBEG,NSV_AEREND
       IF(NSIZELBXSV_ll /= 0) THEN
-        YRECFM = 'LBX_'//TRIM(UPCASE(CAERONAMES(JSV-NSV_AERBEG+1)))
-        WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)'
-        ILENCH=LEN(YCOMMENT)
-        CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
-           & IGRID,ILENCH,YCOMMENT,IRESP)
+        TZFIELD%CMNHNAME   = 'LBX_'//TRIM(UPCASE(CAERONAMES(JSV-NSV_AERBEG+1)))
+        TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
+        TZFIELD%CLBTYPE    = 'LBX'
+        WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'2_Y_Z_','LBXSVM',JSV
+        CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBXSV_ll,IRESP,XLBXSVM(:,:,:,JSV))
       END IF
       !
       IF(NSIZELBYSV_ll /= 0) THEN
-        YRECFM = 'LBY_'//TRIM(UPCASE(CAERONAMES(JSV-NSV_AERBEG+1)))
-        WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)'
-        ILENCH=LEN(YCOMMENT)
-        CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
-           & IGRID,ILENCH,YCOMMENT,IRESP)
+        TZFIELD%CMNHNAME   = 'LBY_'//TRIM(UPCASE(CAERONAMES(JSV-NSV_AERBEG+1)))
+        TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
+        TZFIELD%CLBTYPE    = 'LBY'
+        WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'X_2_Z_','LBYSVM',JSV
+        CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBYSV_ll,IRESP,XLBYSVM(:,:,:,JSV))
       END IF
     END DO
-      IF (LDEPOS_AER(IMI)) THEN
+    !
+    IF (LDEPOS_AER(IMI)) THEN
       DO JSV = NSV_AERDEPBEG,NSV_AERDEPEND
         IF(NSIZELBXSV_ll /= 0) THEN
-           YRECFM = 'LBX_'//TRIM(CDEAERNAMES(JSV-NSV_AERDEPBEG+1))
-        WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)'
-        ILENCH=LEN(YCOMMENT)
-        CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
-             & IGRID,ILENCH,YCOMMENT,IRESP)
+          TZFIELD%CMNHNAME   = 'LBX_'//TRIM(CDEAERNAMES(JSV-NSV_AERDEPBEG+1))
+          TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
+          TZFIELD%CLBTYPE    = 'LBX'
+          WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'2_Y_Z_','LBXSVM',JSV
+          CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBXSV_ll,IRESP,XLBXSVM(:,:,:,JSV))
         END IF             
         !
         IF(NSIZELBYSV_ll /= 0) THEN
-           YRECFM = 'LBY_'//TRIM(CDEAERNAMES(JSV-NSV_AERDEPBEG+1))
-        WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)'
-        ILENCH=LEN(YCOMMENT)
-        CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
-             & IGRID,ILENCH,YCOMMENT,IRESP)
+          TZFIELD%CMNHNAME   = 'LBY_'//TRIM(CDEAERNAMES(JSV-NSV_AERDEPBEG+1))
+          TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
+          TZFIELD%CLBTYPE    = 'LBY'
+          WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'X_2_Z_','LBYSVM',JSV
+          CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBYSV_ll,IRESP,XLBYSVM(:,:,:,JSV))
         END IF             
       END DO      
-      END IF  
-
+    END IF  
   END IF
   !
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CUNITS     = 'kg kg-1'
-  TZFIELD%CDIR       = '--'
-  TZFIELD%NGRID      = 1
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
   DO JSV = NSV_CHEMBEG,NSV_CHEMEND
     IF(NSIZELBXSV_ll /= 0) THEN
       TZFIELD%CMNHNAME   = 'LBX_'//TRIM(UPCASE(CNAMES(JSV-NSV_CHEMBEG+1)))
@@ -505,7 +518,7 @@ IF (NSV >=1) THEN
       WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'2_Y_Z_','LBXSVM',JSV
       CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBXSV_ll,IRESP,XLBXSVM(:,:,:,JSV))
     END IF
-!
+    !
     IF(NSIZELBYSV_ll /= 0) THEN
       TZFIELD%CMNHNAME   = 'LBY_'//TRIM(UPCASE(CNAMES(JSV-NSV_CHEMBEG+1)))
       TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
@@ -523,7 +536,7 @@ IF (NSV >=1) THEN
       WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'2_Y_Z_','LBXSVM',JSV
       CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBXSV_ll,IRESP,XLBXSVM(:,:,:,JSV))
     END IF
-!
+    !
     IF(NSIZELBYSV_ll /= 0) THEN
       TZFIELD%CMNHNAME   = 'LBY_'//TRIM(UPCASE(CICNAMES(JSV-NSV_CHICBEG+1)))
       TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
@@ -535,19 +548,19 @@ IF (NSV >=1) THEN
   !
   DO JSV = NSV_LNOXBEG,NSV_LNOXEND
     IF(NSIZELBXSV_ll /= 0) THEN
-      YRECFM = 'LBX_LINOX'
-      WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)'
-      ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
-           & IGRID,ILENCH,YCOMMENT,IRESP)
+      TZFIELD%CMNHNAME   = 'LBX_LINOX'
+      TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
+      TZFIELD%CLBTYPE    = 'LBX'
+      WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'2_Y_Z_','LBXSVM',JSV
+      CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBXSV_ll,IRESP,XLBXSVM(:,:,:,JSV))
     END IF
-!
+    !
     IF(NSIZELBYSV_ll /= 0) THEN
-      YRECFM = 'LBY_LINOX'
-      WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)'
-      ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
-           & IGRID,ILENCH,YCOMMENT,IRESP)
+      TZFIELD%CMNHNAME   = 'LBY_LINOX'
+      TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
+      TZFIELD%CLBTYPE    = 'LBY'
+      WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'X_2_Z_','LBYSVM',JSV
+      CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBYSV_ll,IRESP,XLBYSVM(:,:,:,JSV))
     END IF
   END DO
   !
@@ -595,7 +608,7 @@ IF (NSV >=1) THEN
       !
       TZFIELD%CSTDNAME   = ''
       TZFIELD%CUNITS     = 'ppp'
-      TZFIELD%CDIR       = '--'
+      TZFIELD%CDIR       = 'XY'
       TZFIELD%NGRID      = 1
       TZFIELD%NTYPE      = TYPEREAL
       TZFIELD%NDIMS      = 3
@@ -630,7 +643,7 @@ IF (NSV >=1) THEN
             JSV = (JMODE-1)*IMOMENTS  & !Number of moments previously counted
                 + JMOM               & !Number of moments in this mode
                 + (NSV_DSTBEG -1)
-!
+            !
             IF(NSIZELBXSV_ll /= 0) THEN !Check on border points in X direction
               TZFIELD%CMNHNAME   = 'LBX_'//TRIM(YPDUST_INI(ISV_NAME_IDX))
               TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
@@ -655,7 +668,7 @@ IF (NSV >=1) THEN
       !
       TZFIELD%CSTDNAME   = ''
       TZFIELD%CUNITS     = 'kg kg-1'
-      TZFIELD%CDIR       = '--'
+      TZFIELD%CDIR       = 'XY'
       TZFIELD%NGRID      = 1
       TZFIELD%NTYPE      = TYPEREAL
       TZFIELD%NDIMS      = 3
@@ -680,19 +693,19 @@ IF (NSV >=1) THEN
       IF (LDEPOS_DST(IMI)) THEN
         DO JSV = NSV_DSTDEPBEG,NSV_DSTDEPEND
           IF(NSIZELBXSV_ll /= 0) THEN
-            YRECFM = 'LBX_'//TRIM(CDEDSTNAMES(JSV-NSV_DSTDEPBEG+1))
-            WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)'
-            ILENCH=LEN(YCOMMENT)
-            CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
-                         & IGRID,ILENCH,YCOMMENT,IRESP)
+            TZFIELD%CMNHNAME   = 'LBX_'//TRIM(CDEDSTNAMES(JSV-NSV_DSTDEPBEG+1))
+            TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
+            TZFIELD%CLBTYPE    = 'LBX'
+            WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'2_Y_Z_','LBXSVM',JSV
+            CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBXSV_ll,IRESP,XLBXSVM(:,:,:,JSV))
           END IF             
-        !
+          !
           IF(NSIZELBYSV_ll /= 0) THEN
-            YRECFM = 'LBY_'//TRIM(CDEDSTNAMES(JSV-NSV_DSTDEPBEG+1))
-            WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)'
-            ILENCH=LEN(YCOMMENT)
-            CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
-                         & IGRID,ILENCH,YCOMMENT,IRESP)
+            TZFIELD%CMNHNAME   = 'LBY_'//TRIM(CDEDSTNAMES(JSV-NSV_DSTDEPBEG+1))
+            TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
+            TZFIELD%CLBTYPE    = 'LBY'
+            WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'X_2_Z_','LBYSVM',JSV
+            CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBYSV_ll,IRESP,XLBYSVM(:,:,:,JSV))
           END IF             
         END DO      
       END IF  
@@ -741,7 +754,15 @@ IF (NSV >=1) THEN
         CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP)
         CALL ABORT
         STOP
-      END IF ! Test IMOMENTS      
+      END IF ! Test IMOMENTS
+      !
+      TZFIELD%CSTDNAME   = ''
+      TZFIELD%CUNITS     = 'ppp'
+      TZFIELD%CDIR       = 'XY'
+      TZFIELD%NGRID      = 1
+      TZFIELD%NTYPE      = TYPEREAL
+      TZFIELD%NDIMS      = 3
+      !
       IF (IMOMENTS == 1) THEN
         DO JMODE=1, NMODE_SLT
           !Index from which names are picked
@@ -751,19 +772,18 @@ IF (NSV >=1) THEN
                 + (NSV_SLTBEG -1)      !Previous list of tracers
 
           IF(NSIZELBXSV_ll /= 0) THEN !Check on border points in X direction   
-            YRECFM = 'LBX_'//TRIM(YPSALT_INI(ISV_NAME_IDX))
-            WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (ppp)'
-            ILENCH=LEN(YCOMMENT)
-            CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),&
-                           IRIMX,NSIZELBXSV_ll, IGRID,ILENCH,YCOMMENT,IRESP)
+            TZFIELD%CMNHNAME   = 'LBX_'//TRIM(YPSALT_INI(ISV_NAME_IDX))
+            TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
+            TZFIELD%CLBTYPE    = 'LBX'
+            WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'2_Y_Z_','LBXSVM',JSV
+            CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBXSV_ll,IRESP,XLBXSVM(:,:,:,JSV))
           ENDIF !Check on border points in X direction
           IF(NSIZELBYSV_ll /= 0) THEN
-            YRECFM = 'LBY_'//TRIM(YPSALT_INI(ISV_NAME_IDX))
-            WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (ppp)'
-            ILENCH=LEN(YCOMMENT)
-            CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),&
-                           IRIMY,NSIZELBYSV_ll, IGRID,ILENCH,YCOMMENT,IRESP)
-
+            TZFIELD%CMNHNAME   = 'LBY_'//TRIM(YPSALT_INI(ISV_NAME_IDX))
+            TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
+            TZFIELD%CLBTYPE    = 'LBY'
+            WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'X_2_Z_','LBYSVM',JSV
+            CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBYSV_ll,IRESP,XLBYSVM(:,:,:,JSV))
           ENDIF  !Check on points in Y direction
         ENDDO ! Loop on mode
       ELSE  ! valeur IMOMENTS =/ 1
@@ -775,19 +795,18 @@ IF (NSV >=1) THEN
                 + (NSV_SLTBEG -1)
 
             IF(NSIZELBXSV_ll /= 0) THEN !Check on border points in X direction
-              YRECFM = 'LBX_'//TRIM(YPSALT_INI(ISV_NAME_IDX))
-              WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (ppp)'
-              ILENCH=LEN(YCOMMENT)
-              CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),&
-                             IRIMX,NSIZELBXSV_ll, IGRID,ILENCH,YCOMMENT,IRESP)
+              TZFIELD%CMNHNAME   = 'LBX_'//TRIM(YPSALT_INI(ISV_NAME_IDX))
+              TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
+              TZFIELD%CLBTYPE    = 'LBX'
+              WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'2_Y_Z_','LBXSVM',JSV
+              CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBXSV_ll,IRESP,XLBXSVM(:,:,:,JSV))
             ENDIF !Check on border points in X direction
             IF(NSIZELBYSV_ll /= 0) THEN
-              YRECFM = 'LBY_'//TRIM(YPSALT_INI(ISV_NAME_IDX))
-              WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (ppp)'
-              ILENCH=LEN(YCOMMENT)
-              CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),&
-                             IRIMY,NSIZELBYSV_ll, IGRID,ILENCH,YCOMMENT,IRESP)
-
+              TZFIELD%CMNHNAME   = 'LBY_'//TRIM(YPSALT_INI(ISV_NAME_IDX))
+              TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
+              TZFIELD%CLBTYPE    = 'LBY'
+              WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'X_2_Z_','LBYSVM',JSV
+              CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBYSV_ll,IRESP,XLBYSVM(:,:,:,JSV))
             ENDIF  !Check on points in Y direction
           ENDDO ! Loop on moments
         ENDDO    ! Loop on modes
@@ -795,50 +814,57 @@ IF (NSV >=1) THEN
     ELSE  ! Test CPROGRAM
       ! We are in the subprogram MESONH, CSALTNAMES are allocated and are 
       !in the same order as the variables in XSVM (i.e. following JPSALTORDER)
+      TZFIELD%CSTDNAME   = ''
+      TZFIELD%CUNITS     = 'kg kg-1'
+      TZFIELD%CDIR       = 'XY'
+      TZFIELD%NGRID      = 1
+      TZFIELD%NTYPE      = TYPEREAL
+      TZFIELD%NDIMS      = 3
+      !
       DO JSV = NSV_SLTBEG,NSV_SLTEND
         IF(NSIZELBXSV_ll /= 0) THEN
-          YRECFM = 'LBX_'//TRIM(CSALTNAMES(JSV-NSV_SLTBEG+1))
-          WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)'
-          ILENCH=LEN(YCOMMENT)
-          CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
-                       & IGRID,ILENCH,YCOMMENT,IRESP)
+          TZFIELD%CMNHNAME   = 'LBX_'//TRIM(CSALTNAMES(JSV-NSV_SLTBEG+1))
+          TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
+          TZFIELD%CLBTYPE    = 'LBX'
+          WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'2_Y_Z_','LBXSVM',JSV
+          CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBXSV_ll,IRESP,XLBXSVM(:,:,:,JSV))
         END IF             
         !
         IF(NSIZELBYSV_ll /= 0) THEN
-          YRECFM = 'LBY_'//TRIM(CSALTNAMES(JSV-NSV_SLTBEG+1))
-          WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)'
-          ILENCH=LEN(YCOMMENT)
-          CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
-                       & IGRID,ILENCH,YCOMMENT,IRESP)
+          TZFIELD%CMNHNAME   = 'LBY_'//TRIM(CSALTNAMES(JSV-NSV_SLTBEG+1))
+          TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
+          TZFIELD%CLBTYPE    = 'LBY'
+          WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'X_2_Z_','LBYSVM',JSV
+          CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBYSV_ll,IRESP,XLBYSVM(:,:,:,JSV))
         END IF            
       END DO
       IF (LDEPOS_SLT(IMI)) THEN
         DO JSV = NSV_SLTDEPBEG,NSV_SLTDEPEND
           IF(NSIZELBXSV_ll /= 0) THEN
-            YRECFM = 'LBX_'//TRIM(CDESLTNAMES(JSV-NSV_SLTDEPBEG+1))
-            WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)'
-            ILENCH=LEN(YCOMMENT)
-            CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
-                         & IGRID,ILENCH,YCOMMENT,IRESP)
+            TZFIELD%CMNHNAME   = 'LBX_'//TRIM(CDESLTNAMES(JSV-NSV_SLTDEPBEG+1))
+            TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
+            TZFIELD%CLBTYPE    = 'LBX'
+            WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'2_Y_Z_','LBXSVM',JSV
+            CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBXSV_ll,IRESP,XLBXSVM(:,:,:,JSV))
           END IF             
-        !
+          !
           IF(NSIZELBYSV_ll /= 0) THEN
-            YRECFM = 'LBY_'//TRIM(CDESLTNAMES(JSV-NSV_SLTDEPBEG+1))
-            WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)'
-            ILENCH=LEN(YCOMMENT)
-            CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
-                         & IGRID,ILENCH,YCOMMENT,IRESP)
+            TZFIELD%CMNHNAME   = 'LBY_'//TRIM(CDESLTNAMES(JSV-NSV_SLTDEPBEG+1))
+            TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
+            TZFIELD%CLBTYPE    = 'LBY'
+            WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'X_2_Z_','LBYSVM',JSV
+            CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBYSV_ll,IRESP,XLBYSVM(:,:,:,JSV))
           END IF             
         END DO      
       END IF  
     END IF  
   ENDIF   
-!
+  !
   ! lagrangian variables
   IF (NSV_LGEND>=NSV_LGBEG) THEN
     TZFIELD%CSTDNAME   = ''
     TZFIELD%CUNITS     = 'm'
-    TZFIELD%CDIR       = '--'
+    TZFIELD%CDIR       = 'XY'
     TZFIELD%NGRID      = 1
     TZFIELD%NTYPE      = TYPEREAL
     TZFIELD%NDIMS      = 3
@@ -861,69 +887,88 @@ IF (NSV >=1) THEN
       END IF
     END DO
   END IF
-  ! passive pollutants  
-  DO JSV = NSV_PPBEG,NSV_PPEND
+  ! passive pollutants
+  IF (NSV_PPEND>=NSV_PPBEG) THEN
     TZFIELD%CSTDNAME   = ''
     TZFIELD%CUNITS     = 'kg kg-1'
-    TZFIELD%CDIR       = '--'
+    TZFIELD%CDIR       = 'XY'
     TZFIELD%NGRID      = 1
     TZFIELD%NTYPE      = TYPEREAL
     TZFIELD%NDIMS      = 3
     !
-    IF(NSIZELBXSV_ll /= 0) THEN
-      TZFIELD%CMNHNAME   = 'LBX_PP'
-      TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
-      TZFIELD%CLBTYPE    = 'LBX'
-      WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'2_Y_Z_','LBXSVM',JSV
-      CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBXSV_ll,IRESP,XLBXSVM(:,:,:,JSV))
-    END IF
-!
-    IF(NSIZELBYSV_ll /= 0) THEN
-      TZFIELD%CMNHNAME   = 'LBY_PP'
-      TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
-      TZFIELD%CLBTYPE    = 'LBY'
-      WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'X_2_Z_','LBYSVM',JSV
-      CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBYSV_ll,IRESP,XLBYSVM(:,:,:,JSV))
-    END IF
-  END DO
-
+    DO JSV = NSV_PPBEG,NSV_PPEND
+      IF(NSIZELBXSV_ll /= 0) THEN
+        TZFIELD%CMNHNAME   = 'LBX_PP'
+        TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
+        TZFIELD%CLBTYPE    = 'LBX'
+        WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'2_Y_Z_','LBXSVM',JSV
+        CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBXSV_ll,IRESP,XLBXSVM(:,:,:,JSV))
+      END IF
+      !
+      IF(NSIZELBYSV_ll /= 0) THEN
+        TZFIELD%CMNHNAME   = 'LBY_PP'
+        TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
+        TZFIELD%CLBTYPE    = 'LBY'
+        WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'X_2_Z_','LBYSVM',JSV
+        CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBYSV_ll,IRESP,XLBYSVM(:,:,:,JSV))
+      END IF
+    END DO
+  END IF
   ! conditional sampling
-  DO JSV = NSV_CSBEG,NSV_CSEND
-    IF(NSIZELBXSV_ll /= 0) THEN
-      YRECFM = 'LBX_CS'
-      WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)'
-      ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
-           & IGRID,ILENCH,YCOMMENT,IRESP)
-    END IF
-!
-    IF(NSIZELBYSV_ll /= 0) THEN
-      YRECFM = 'LBY_CS'
-      WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)'
-      ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
-           & IGRID,ILENCH,YCOMMENT,IRESP)
-    END IF
-  END DO
+  IF (NSV_CSEND>=NSV_CSBEG) THEN
+    TZFIELD%CSTDNAME   = ''
+    TZFIELD%CUNITS     = 'kg kg-1'
+    TZFIELD%CDIR       = 'XY'
+    TZFIELD%NGRID      = 1
+    TZFIELD%NTYPE      = TYPEREAL
+    TZFIELD%NDIMS      = 3
+    !
+    DO JSV = NSV_CSBEG,NSV_CSEND
+      IF(NSIZELBXSV_ll /= 0) THEN
+        TZFIELD%CMNHNAME   = 'LBX_CS'
+        TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
+        TZFIELD%CLBTYPE    = 'LBX'
+        WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'2_Y_Z_','LBXSVM',JSV
+        CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBXSV_ll,IRESP,XLBXSVM(:,:,:,JSV))
+      END IF
+      !
+      IF(NSIZELBYSV_ll /= 0) THEN
+        TZFIELD%CMNHNAME   = 'LBY_CS'
+        TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
+        TZFIELD%CLBTYPE    = 'LBY'
+        WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'X_2_Z_','LBYSVM',JSV
+        CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBYSV_ll,IRESP,XLBYSVM(:,:,:,JSV))
+      END IF
+    END DO
+  END IF
 #ifdef MNH_FOREFIRE
   ! ForeFire scalar variables
-  DO JSV = NSV_FFBEG,NSV_FFEND
-    IF(NSIZELBXSV_ll /= 0) THEN
-      YRECFM = 'LBX_FF'
-      WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBX_FF',JSV,' (KG/KG)'
-      ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
-           & IGRID,ILENCH,YCOMMENT,IRESP)
-    END IF
-!
-    IF(NSIZELBYSV_ll /= 0) THEN
-      YRECFM = 'LBY_FF'
-      WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBY_FF',JSV,' (KG/KG)'
-      ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
-           & IGRID,ILENCH,YCOMMENT,IRESP)
-    END IF
-  END DO
+  IF (NSV_FFEND>=NSV_FFBEG) THEN
+    TZFIELD%CSTDNAME   = ''
+    TZFIELD%CUNITS     = 'kg kg-1'
+    TZFIELD%CDIR       = 'XY'
+    TZFIELD%NGRID      = 1
+    TZFIELD%NTYPE      = TYPEREAL
+    TZFIELD%NDIMS      = 3
+    !
+    DO JSV = NSV_FFBEG,NSV_FFEND
+      IF(NSIZELBXSV_ll /= 0) THEN
+        TZFIELD%CMNHNAME   = 'LBX_FF'
+        TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
+        TZFIELD%CLBTYPE    = 'LBX'
+        WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'2_Y_Z_','LBXSVM',JSV
+        CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBXSV_ll,IRESP,XLBXSVM(:,:,:,JSV))
+      END IF
+      !
+      IF(NSIZELBYSV_ll /= 0) THEN
+        TZFIELD%CMNHNAME   = 'LBY_FF'
+        TZFIELD%CLONGNAME  = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME)
+        TZFIELD%CLBTYPE    = 'LBY'
+        WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'X_2_Z_','LBYSVM',JSV
+        CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBYSV_ll,IRESP,XLBYSVM(:,:,:,JSV))
+      END IF
+    END DO
+  END IF
 #endif
 END IF
 !
@@ -931,4 +976,3 @@ END IF
 !
 !
 END SUBROUTINE WRITE_LB_n  
-