diff --git a/src/SURFEX/zoom_pgd_cover.F90 b/src/SURFEX/zoom_pgd_cover.F90
index 109a6e8c314c9e3f29de844d693f2982de56774c..5c8da7dbca39d508a7432af4a46dada442f58fd5 100644
--- a/src/SURFEX/zoom_pgd_cover.F90
+++ b/src/SURFEX/zoom_pgd_cover.F90
@@ -1,331 +1,345 @@
-!SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
-!SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
-!SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
-!SFX_LIC for details. version 1.
-!     #########
-      SUBROUTINE ZOOM_PGD_COVER (DTCO, UG, U,GCP, &
-                                 HPROGRAM,HINIFILE,HINIFILETYPE,OECOCLIMAP)
-!     ###########################################################
-
-!!
-!!    PURPOSE
-!!    -------
-!!   This program prepares the physiographic data fields.
-!!
-!!    METHOD
-!!    ------
-!!   
-!!    EXTERNAL
-!!    --------
-!!
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!
-!!
-!!    REFERENCE
-!!    ---------
-!!
-!!    AUTHOR
-!!    ------
-!!
-!!    V. Masson                   Meteo-France
-!!
-!!    MODIFICATION
-!!    ------------
-!!
-!!    Original     13/10/03
-!     Modification 17/04/12 M.Tomasini All COVER physiographic fields are now 
-!!                                     interpolated for spawning => 
-!!                                     ABOR1_SFX if (.NOT.OECOCLIMAP) in comment
-!     Modification 05/02/15 M.Moge : use NSIZE_FULL instead of SIZE(XLAT) (for clarity)
-!!      J.Escobar 18/12/2015 : missing interface
-!----------------------------------------------------------------------------
-!
-!*    0.     DECLARATION
-!            -----------
-!
-!
-!
-!
-USE MODD_DATA_COVER_n, ONLY : DATA_COVER_t
-USE MODD_SURF_ATM_GRID_n, ONLY : SURF_ATM_GRID_t
-USE MODD_SURF_ATM_n, ONLY : SURF_ATM_t
-USE MODD_GRID_CONF_PROJ, ONLY : GRID_CONF_PROJ_t
-!
-USE MODD_SURF_PAR, ONLY : XUNDEF
-USE MODD_DATA_COVER_PAR,   ONLY : JPCOVER
-USE MODD_PREP,             ONLY : CINGRID_TYPE, CINTERP_TYPE
-!
-USE MODE_READ_SURF_COV, ONLY : READ_SURF_COV
-!
-USE MODI_CONVERT_COVER_FRAC
-USE MODI_OPEN_AUX_IO_SURF
-USE MODI_READ_SURF
-USE MODI_CLOSE_AUX_IO_SURF
-USE MODI_PREP_GRID_EXTERN
-USE MODI_HOR_INTERPOL
-USE MODI_PREP_OUTPUT_GRID
-USE MODI_OLD_NAME
-USE MODI_SUM_ON_ALL_PROCS
-USE MODI_GET_LUOUT
-USE MODI_CLEAN_PREP_OUTPUT_GRID
-USE MODI_GET_1D_MASK
-USE MODI_READ_LCOVER
-#ifdef SFX_MNH
-USE MODI_READ_SURFX2COV_1COV_MNH
-#endif
-!
-USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
-USE PARKIND1  ,ONLY : JPRB
-!
-IMPLICIT NONE
-!
-!*    0.1    Declaration of dummy arguments
-!            ------------------------------
-!
-!
-TYPE(DATA_COVER_t), INTENT(INOUT) :: DTCO
-TYPE(SURF_ATM_GRID_t), INTENT(INOUT) :: UG
-TYPE(SURF_ATM_t), INTENT(INOUT) :: U
-TYPE(GRID_CONF_PROJ_t),INTENT(INOUT) :: GCP
-!
- CHARACTER(LEN=6),     INTENT(IN)  :: HPROGRAM    ! program calling
- CHARACTER(LEN=28),    INTENT(IN)  :: HINIFILE    ! input atmospheric file name
- CHARACTER(LEN=6),     INTENT(IN)  :: HINIFILETYPE! input atmospheric file type
-LOGICAL,              INTENT(OUT) :: OECOCLIMAP  ! flag to use ecoclimap
-!
-!
-!*    0.2    Declaration of local variables
-!            ------------------------------
-!
-INTEGER :: ICPT1, ICPT2
-INTEGER :: IRESP
-INTEGER :: ILUOUT
-INTEGER :: INI     ! total 1D dimension (input grid)
-INTEGER :: IL      ! total 1D dimension (output grid)
-INTEGER :: JCOVER  ! loop counter
-INTEGER :: IVERSION       ! surface version
-#ifdef MNH_PARALLEL
-REAL, DIMENSION(:), POINTER     :: ZCOVER1D
-#endif
-REAL, DIMENSION(:,:), POINTER     :: ZCOVER
-REAL, DIMENSION(:,:), POINTER :: ZSEA1, ZWATER1, ZNATURE1, ZTOWN1
-REAL, DIMENSION(:,:), POINTER :: ZSEA2, ZWATER2, ZNATURE2, ZTOWN2
-REAL, DIMENSION(:),   ALLOCATABLE :: ZSUM
- CHARACTER(LEN=16) :: YRECFM         ! Name of the article to be read
- CHARACTER(LEN=100) :: YCOMMENT
-REAL(KIND=JPRB) :: ZHOOK_HANDLE
-!------------------------------------------------------------------------------
-IF (LHOOK) CALL DR_HOOK('ZOOM_PGD_COVER',0,ZHOOK_HANDLE)
- CALL GET_LUOUT(HPROGRAM,ILUOUT)
-!
-!*      1.     Preparation of IO for reading in the file
-!              -----------------------------------------
-!
-!* Note that all points are read, even those without physical meaning.
-!  These points will not be used during the horizontal interpolation step.
-!  Their value must be defined as XUNDEF.
-!
- CALL OPEN_AUX_IO_SURF(&
-                       HINIFILE,HINIFILETYPE,'FULL  ')
-!
- CALL READ_SURF(&
-                HPROGRAM,'ECOCLIMAP',OECOCLIMAP,IRESP)
-!
-!------------------------------------------------------------------------------
-!
-!*      2.     Reading of grid
-!              ---------------
-!
- CALL PREP_OUTPUT_GRID(UG, U, &
-                       ILUOUT,UG%CGRID,UG%XGRID_PAR,UG%XLAT,UG%XLON)
-!
- CALL PREP_GRID_EXTERN(GCP,&
-                       HINIFILETYPE,ILUOUT,CINGRID_TYPE,CINTERP_TYPE,INI)
-!
-!------------------------------------------------------------------------------
-!
-!*      3.     Reading of cover
-!              ----------------
-!
-YRECFM='VERSION'
- CALL READ_SURF(&
-                HPROGRAM,YRECFM,IVERSION,IRESP)
-!
-ALLOCATE(U%LCOVER(JPCOVER))
-!
- CALL OLD_NAME(HPROGRAM,'COVER_LIST      ',YRECFM)
- CALL READ_LCOVER(HPROGRAM,U%LCOVER)
-!
-#ifndef MNH_PARALLEL
-ALLOCATE(ZCOVER(INI,COUNT(U%LCOVER)))
- CALL READ_SURF_COV(HPROGRAM,YRECFM,ZCOVER(:,:),U%LCOVER,IRESP,HDIR='A')
-#endif
-!
-ALLOCATE(ZSEA1   (INI,1))
-ALLOCATE(ZNATURE1(INI,1))
-ALLOCATE(ZWATER1 (INI,1))
-ALLOCATE(ZTOWN1  (INI,1))
-!
-IF (IVERSION>=7) THEN
-  CALL READ_SURF(&
-                HPROGRAM,'FRAC_SEA   ',ZSEA1(:,1),   IRESP,HDIR='A')
-  CALL READ_SURF(&
-                HPROGRAM,'FRAC_NATURE',ZNATURE1(:,1),IRESP,HDIR='A')
-  CALL READ_SURF(&
-                HPROGRAM,'FRAC_WATER ',ZWATER1(:,1), IRESP,HDIR='A')
-  CALL READ_SURF(&
-                HPROGRAM,'FRAC_TOWN  ',ZTOWN1(:,1),  IRESP,HDIR='A')
-  !
-ELSE
-#ifndef MNH_PARALLEL
-  CALL CONVERT_COVER_FRAC(DTCO, &
-          ZCOVER,U%LCOVER,ZSEA1(:,1),ZNATURE1(:,1),ZTOWN1(:,1),ZWATER1(:,1))
-#endif
-ENDIF
-!
-!------------------------------------------------------------------------------
-!
-!*      4.     Interpolations
-!              --------------
-!
-IL = U%NSIZE_FULL
-ALLOCATE(U%XCOVER(IL,COUNT(U%LCOVER)))
-!
-! on lit les cover une apres l'autre, et on appelle hor_interpol sur chaque cover separement
-!
-#ifdef MNH_PARALLEL
-IF ( HPROGRAM == 'MESONH' ) THEN
-  ALLOCATE(ZCOVER1D(INI))
-  ICPT1 = 0
-  DO JCOVER=1,JPCOVER
-    IF ( U%LCOVER( JCOVER ) ) THEN
-      ICPT1 = ICPT1 + 1
-      CALL READ_SURFX2COV_1COV_MNH(YRECFM,INI,JCOVER,ZCOVER1D(:),IRESP,YCOMMENT,'A')
-      CALL HOR_INTERPOL(&
-              DTCO, U,GCP,ILUOUT,SPREAD(ZCOVER1D,2,1),U%XCOVER(:,ICPT1:ICPT1))
-    ENDIF
-    !
-  ENDDO 
-  DEALLOCATE(ZCOVER1D)
-ENDIF
-#else
- CALL HOR_INTERPOL(DTCO, U,GCP, &
-                   ILUOUT,ZCOVER,U%XCOVER)
- DEALLOCATE(ZCOVER)           
-#endif           
-!
- CALL CLOSE_AUX_IO_SURF(HINIFILE,HINIFILETYPE)
-!
-ALLOCATE(ZCOVER(IL,COUNT(U%LCOVER)))
-ICPT1 = 0
-ICPT2 = 0
-DO JCOVER = 1,JPCOVER
-  IF (U%LCOVER(JCOVER)) THEN
-    ICPT1 = ICPT1 + 1
-    IF (ALL(U%XCOVER(:,ICPT1)==0.)) THEN
-      U%LCOVER(JCOVER) = .FALSE.
-    ELSE
-      ICPT2 = ICPT2 + 1
-      ZCOVER(:,ICPT2) = U%XCOVER(:,ICPT1)
-    ENDIF
-  ENDIF
-ENDDO
-!
-DEALLOCATE(U%XCOVER)
-ALLOCATE(U%XCOVER(IL,ICPT2))
-U%XCOVER(:,:) = ZCOVER(:,1:ICPT2)
-DEALLOCATE(ZCOVER)
-!
-ALLOCATE(ZSEA2  (IL,1))
-ALLOCATE(ZNATURE2(IL,1))
-ALLOCATE(ZWATER2 (IL,1))
-ALLOCATE(ZTOWN2  (IL,1))
-!
- CALL HOR_INTERPOL(DTCO, U,GCP, &
-                   ILUOUT,ZSEA1,ZSEA2)
- CALL HOR_INTERPOL(DTCO, U,GCP, &
-                   ILUOUT,ZNATURE1,ZNATURE2)
- CALL HOR_INTERPOL(DTCO, U,GCP, &
-                   ILUOUT,ZWATER1,ZWATER2)
- CALL HOR_INTERPOL(DTCO, U,GCP, &
-                   ILUOUT,ZTOWN1,ZTOWN2)
-!
-DEALLOCATE(ZSEA1)
-DEALLOCATE(ZNATURE1)
-DEALLOCATE(ZWATER1)
-DEALLOCATE(ZTOWN1)
-!
-ALLOCATE(U%XSEA   (IL))
-ALLOCATE(U%XNATURE(IL))
-ALLOCATE(U%XWATER (IL))
-ALLOCATE(U%XTOWN  (IL))
-!
-U%XSEA(:)   = ZSEA2   (:,1)
-U%XNATURE(:)= ZNATURE2(:,1)
-U%XWATER(:) = ZWATER2 (:,1)
-U%XTOWN(:)  = ZTOWN2  (:,1)
-!
-DEALLOCATE(ZSEA2)
-DEALLOCATE(ZNATURE2)
-DEALLOCATE(ZWATER2)
-DEALLOCATE(ZTOWN2)
-!
- CALL CLEAN_PREP_OUTPUT_GRID
-!------------------------------------------------------------------------------
-!
-!*      5.     Coherence check
-!              ---------------
-! 
-ALLOCATE(ZSUM(IL))
-ZSUM = 0.
-DO JCOVER=1,SIZE(U%XCOVER,2)
-  ZSUM(:) = ZSUM(:) + U%XCOVER(:,JCOVER)
-END DO
-!
-DO JCOVER=1,SIZE(U%XCOVER,2)
-  WHERE(ZSUM(:)/=0.)  U%XCOVER(:,JCOVER) = U%XCOVER(:,JCOVER)/ZSUM(:)
-END DO
-!
-DO JCOVER=1,SIZE(U%XCOVER,2)
-  IF (ALL(U%XCOVER(:,JCOVER)==0.)) U%LCOVER(JCOVER) = .FALSE.
-END DO
-!------------------------------------------------------------------------------
-!
-!*      6.     Fractions
-!              ---------
-!
-! When the model runs in multiproc, NSIZE* represents the number of points
-! on a proc, and NDIM* the total number of points on all procs.
-! The following definition of NDIM* won't be correct any more when the PGD
-! runs in multiproc.
-!
-U%NSIZE_NATURE    = COUNT(U%XNATURE(:) > 0.0)
-U%NSIZE_WATER     = COUNT(U%XWATER (:) > 0.0)
-U%NSIZE_SEA       = COUNT(U%XSEA   (:) > 0.0)
-U%NSIZE_TOWN      = COUNT(U%XTOWN  (:) > 0.0)
-U%NSIZE_FULL      = IL
-!
-U%NDIM_NATURE    = SUM_ON_ALL_PROCS(HPROGRAM,UG%CGRID,U%XNATURE(:) > 0., 'DIM')
-U%NDIM_WATER     = SUM_ON_ALL_PROCS(HPROGRAM,UG%CGRID,U%XWATER (:) > 0., 'DIM')
-U%NDIM_SEA       = SUM_ON_ALL_PROCS(HPROGRAM,UG%CGRID,U%XSEA   (:) > 0., 'DIM')
-U%NDIM_TOWN      = SUM_ON_ALL_PROCS(HPROGRAM,UG%CGRID,U%XTOWN  (:) > 0., 'DIM')
-ZSUM=1.
-U%NDIM_FULL      = SUM_ON_ALL_PROCS(HPROGRAM,UG%CGRID,ZSUM   (:) ==1., 'DIM')
-DEALLOCATE(ZSUM)
-!
-ALLOCATE(U%NR_NATURE (U%NSIZE_NATURE))
-ALLOCATE(U%NR_TOWN   (U%NSIZE_TOWN  ))
-ALLOCATE(U%NR_WATER  (U%NSIZE_WATER ))
-ALLOCATE(U%NR_SEA    (U%NSIZE_SEA   ))
-!
-IF (U%NSIZE_SEA   >0)CALL GET_1D_MASK( U%NSIZE_SEA,    U%NSIZE_FULL, U%XSEA   , U%NR_SEA   )
-IF (U%NSIZE_WATER >0)CALL GET_1D_MASK( U%NSIZE_WATER,  U%NSIZE_FULL, U%XWATER , U%NR_WATER )
-IF (U%NSIZE_TOWN  >0)CALL GET_1D_MASK( U%NSIZE_TOWN,   U%NSIZE_FULL, U%XTOWN  , U%NR_TOWN  )
-IF (U%NSIZE_NATURE>0)CALL GET_1D_MASK( U%NSIZE_NATURE, U%NSIZE_FULL, U%XNATURE, U%NR_NATURE)
-IF (LHOOK) CALL DR_HOOK('ZOOM_PGD_COVER',1,ZHOOK_HANDLE)
-
-!_______________________________________________________________________________
-!
-END SUBROUTINE ZOOM_PGD_COVER
+!SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
+!SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!SFX_LIC for details. version 1.
+!     #########
+      SUBROUTINE ZOOM_PGD_COVER (DTCO, UG, U,GCP, &
+                                 HPROGRAM,HINIFILE,HINIFILETYPE,OECOCLIMAP)
+!     ###########################################################
+
+!!
+!!    PURPOSE
+!!    -------
+!!   This program prepares the physiographic data fields.
+!!
+!!    METHOD
+!!    ------
+!!   
+!!    EXTERNAL
+!!    --------
+!!
+!!
+!!    IMPLICIT ARGUMENTS
+!!    ------------------
+!!
+!!
+!!    REFERENCE
+!!    ---------
+!!
+!!    AUTHOR
+!!    ------
+!!
+!!    V. Masson                   Meteo-France
+!!
+!!    MODIFICATION
+!!    ------------
+!!
+!!    Original     13/10/03
+!     Modification 17/04/12 M.Tomasini All COVER physiographic fields are now 
+!!                                     interpolated for spawning => 
+!!                                     ABOR1_SFX if (.NOT.OECOCLIMAP) in comment
+!     Modification 05/02/15 M.Moge : use NSIZE_FULL instead of SIZE(XLAT) (for clarity)
+!!      J.Escobar 18/12/2015 : missing interface
+!----------------------------------------------------------------------------
+!
+!*    0.     DECLARATION
+!            -----------
+!
+!
+!
+!
+USE MODD_DATA_COVER_n, ONLY : DATA_COVER_t
+USE MODD_SURF_ATM_GRID_n, ONLY : SURF_ATM_GRID_t
+USE MODD_SURF_ATM_n, ONLY : SURF_ATM_t
+USE MODD_GRID_CONF_PROJ, ONLY : GRID_CONF_PROJ_t
+!
+USE MODD_SURF_PAR, ONLY : XUNDEF
+USE MODD_DATA_COVER_PAR,   ONLY : JPCOVER
+USE MODD_PREP,             ONLY : CINGRID_TYPE, CINTERP_TYPE
+!
+USE MODE_READ_SURF_COV, ONLY : READ_SURF_COV
+!
+USE MODI_CONVERT_COVER_FRAC
+USE MODI_OPEN_AUX_IO_SURF
+USE MODI_READ_SURF
+USE MODI_CLOSE_AUX_IO_SURF
+USE MODI_PREP_GRID_EXTERN
+USE MODI_HOR_INTERPOL
+USE MODI_HOR_INTERPOL_1COV
+USE MODI_PREP_OUTPUT_GRID
+USE MODI_OLD_NAME
+USE MODI_SUM_ON_ALL_PROCS
+USE MODI_GET_LUOUT
+USE MODI_CLEAN_PREP_OUTPUT_GRID
+USE MODI_GET_1D_MASK
+USE MODI_READ_LCOVER
+#ifdef SFX_MNH
+USE MODI_READ_SURFX2COV_1COV_MNH
+#endif
+!
+USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
+USE PARKIND1  ,ONLY : JPRB
+!
+IMPLICIT NONE
+!
+!*    0.1    Declaration of dummy arguments
+!            ------------------------------
+!
+!
+TYPE(DATA_COVER_t), INTENT(INOUT) :: DTCO
+TYPE(SURF_ATM_GRID_t), INTENT(INOUT) :: UG
+TYPE(SURF_ATM_t), INTENT(INOUT) :: U
+TYPE(GRID_CONF_PROJ_t),INTENT(INOUT) :: GCP
+!
+ CHARACTER(LEN=6),     INTENT(IN)  :: HPROGRAM    ! program calling
+ CHARACTER(LEN=28),    INTENT(IN)  :: HINIFILE    ! input atmospheric file name
+ CHARACTER(LEN=6),     INTENT(IN)  :: HINIFILETYPE! input atmospheric file type
+LOGICAL,              INTENT(OUT) :: OECOCLIMAP  ! flag to use ecoclimap
+!
+!
+!*    0.2    Declaration of local variables
+!            ------------------------------
+!
+INTEGER :: ICPT1, ICPT2
+INTEGER :: IRESP
+INTEGER :: ILUOUT
+INTEGER :: INI     ! total 1D dimension (input grid)
+INTEGER :: IL      ! total 1D dimension (output grid)
+INTEGER :: JCOVER  ! loop counter
+INTEGER :: IVERSION       ! surface version
+#ifdef MNH_PARALLEL
+REAL, DIMENSION(:), POINTER     :: ZCOVER1D
+#endif
+REAL, DIMENSION(:,:), POINTER     :: ZCOVER
+REAL, DIMENSION(:,:), POINTER :: ZSEA1, ZWATER1, ZNATURE1, ZTOWN1
+REAL, DIMENSION(:,:), POINTER :: ZSEA2, ZWATER2, ZNATURE2, ZTOWN2
+REAL, DIMENSION(:),   ALLOCATABLE :: ZSUM
+ CHARACTER(LEN=16) :: YRECFM         ! Name of the article to be read
+ CHARACTER(LEN=100) :: YCOMMENT
+REAL(KIND=JPRB) :: ZHOOK_HANDLE
+!------------------------------------------------------------------------------
+IF (LHOOK) CALL DR_HOOK('ZOOM_PGD_COVER',0,ZHOOK_HANDLE)
+ CALL GET_LUOUT(HPROGRAM,ILUOUT)
+!
+!*      1.     Preparation of IO for reading in the file
+!              -----------------------------------------
+!
+!* Note that all points are read, even those without physical meaning.
+!  These points will not be used during the horizontal interpolation step.
+!  Their value must be defined as XUNDEF.
+!
+ CALL OPEN_AUX_IO_SURF(&
+                       HINIFILE,HINIFILETYPE,'FULL  ')
+!
+ CALL READ_SURF(&
+                HPROGRAM,'ECOCLIMAP',OECOCLIMAP,IRESP)
+!
+!------------------------------------------------------------------------------
+!
+!*      2.     Reading of grid
+!              ---------------
+!
+ CALL PREP_GRID_EXTERN(GCP,&
+                       HINIFILETYPE,ILUOUT,CINGRID_TYPE,CINTERP_TYPE,INI)
+!
+ CALL PREP_OUTPUT_GRID(UG, U, &
+                       ILUOUT,UG%CGRID,UG%XGRID_PAR,UG%XLAT,UG%XLON)
+!
+!------------------------------------------------------------------------------
+!
+!*      3.     Reading of cover
+!              ----------------
+!
+YRECFM='VERSION'
+ CALL READ_SURF(&
+                HPROGRAM,YRECFM,IVERSION,IRESP)
+!
+ALLOCATE(U%LCOVER(JPCOVER))
+!
+ALLOCATE(ZSEA1   (INI,1))
+ALLOCATE(ZNATURE1(INI,1))
+ALLOCATE(ZWATER1 (INI,1))
+ALLOCATE(ZTOWN1  (INI,1))
+!
+IF (IVERSION>=7) THEN
+  CALL READ_SURF(&
+                HPROGRAM,'FRAC_SEA   ',ZSEA1(:,1),   IRESP,HDIR='A')
+  CALL READ_SURF(&
+                HPROGRAM,'FRAC_NATURE',ZNATURE1(:,1),IRESP,HDIR='A')
+  CALL READ_SURF(&
+                HPROGRAM,'FRAC_WATER ',ZWATER1(:,1), IRESP,HDIR='A')
+  CALL READ_SURF(&
+                HPROGRAM,'FRAC_TOWN  ',ZTOWN1(:,1),  IRESP,HDIR='A')
+  CALL OLD_NAME(&
+                HPROGRAM,'COVER_LIST      ',YRECFM)
+  CALL READ_LCOVER(HPROGRAM,U%LCOVER)       
+#ifdef MNH_PARALLEL
+  ALLOCATE(ZCOVER1D(INI))
+#else
+  ALLOCATE(ZCOVER(INI,COUNT(U%LCOVER)))
+ CALL READ_SURF_COV(&
+                    HPROGRAM,YRECFM,ZCOVER(:,:),U%LCOVER,IRESP,HDIR='A')
+  
+#endif
+      
+  !
+ELSE
+#ifdef MNH_PARALLEL
+  ! we assume that IVERSION>=7
+#else
+ CALL OLD_NAME(&
+               HPROGRAM,'COVER_LIST      ',YRECFM)
+ CALL READ_LCOVER(HPROGRAM,U%LCOVER) 
+ !
+ ALLOCATE(ZCOVER(INI,COUNT(U%LCOVER)))
+ CALL READ_SURF_COV(&
+                    HPROGRAM,YRECFM,ZCOVER(:,:),U%LCOVER,IRESP,HDIR='A')
+
+        
+  CALL CONVERT_COVER_FRAC(DTCO, &
+                          ZCOVER,U%LCOVER,ZSEA1(:,1),ZNATURE1(:,1),ZTOWN1(:,1),ZWATER1(:,1))
+#endif                  
+ENDIF
+!
+! CALL CLOSE_AUX_IO_SURF(HINIFILE,HINIFILETYPE)
+!------------------------------------------------------------------------------
+!
+!*      4.     Reading of cover & Interpolations
+!              --------------
+!
+IL = U%NSIZE_FULL
+ALLOCATE(U%XCOVER(IL,COUNT(U%LCOVER)))
+!
+! on lit les cover une apres l'autre, et on appelle hor_interpol sur chaque cover separement
+!
+#ifdef MNH_PARALLEL
+IF ( HPROGRAM == 'MESONH' ) THEN
+  ICPT1 = 0
+  DO JCOVER=1,JPCOVER
+    IF ( U%LCOVER( JCOVER ) ) THEN
+      ICPT1 = ICPT1 + 1
+      CALL READ_SURFX2COV_1COV_MNH(YRECFM,INI,JCOVER,ZCOVER1D(:),IRESP,YCOMMENT,'A')
+      CALL HOR_INTERPOL_1COV(DTCO, U,GCP,ILUOUT,ZCOVER1D,U%XCOVER(:,ICPT1))
+    ENDIF
+    !
+  ENDDO 
+ENDIF
+DEALLOCATE(ZCOVER1D)
+#else
+ CALL HOR_INTERPOL(DTCO, U,GCP, &
+                   ILUOUT,ZCOVER,U%XCOVER)
+ DEALLOCATE(ZCOVER)           
+#endif           
+!
+ALLOCATE(ZCOVER(IL,COUNT(U%LCOVER)))
+ICPT1 = 0
+ICPT2 = 0
+DO JCOVER = 1,JPCOVER
+  IF (U%LCOVER(JCOVER)) THEN
+    ICPT1 = ICPT1 + 1
+    IF (ALL(U%XCOVER(:,ICPT1)==0.)) THEN
+      U%LCOVER(JCOVER) = .FALSE.
+    ELSE
+      ICPT2 = ICPT2 + 1
+      ZCOVER(:,ICPT2) = U%XCOVER(:,ICPT1)
+    ENDIF
+  ENDIF
+ENDDO
+!
+DEALLOCATE(U%XCOVER)
+ALLOCATE(U%XCOVER(IL,ICPT2))
+U%XCOVER(:,:) = ZCOVER(:,1:ICPT2)
+DEALLOCATE(ZCOVER)
+!
+CALL CLOSE_AUX_IO_SURF(HINIFILE,HINIFILETYPE)
+ALLOCATE(ZSEA2  (IL,1))
+ALLOCATE(ZNATURE2(IL,1))
+ALLOCATE(ZWATER2 (IL,1))
+ALLOCATE(ZTOWN2  (IL,1))
+!
+ CALL HOR_INTERPOL(DTCO, U,GCP, &
+                   ILUOUT,ZSEA1,ZSEA2)
+ CALL HOR_INTERPOL(DTCO, U,GCP, &
+                   ILUOUT,ZNATURE1,ZNATURE2)
+ CALL HOR_INTERPOL(DTCO, U,GCP, &
+                   ILUOUT,ZWATER1,ZWATER2)
+ CALL HOR_INTERPOL(DTCO, U,GCP, &
+                   ILUOUT,ZTOWN1,ZTOWN2)
+!
+DEALLOCATE(ZSEA1)
+DEALLOCATE(ZNATURE1)
+DEALLOCATE(ZWATER1)
+DEALLOCATE(ZTOWN1)
+!
+ALLOCATE(U%XSEA   (IL))
+ALLOCATE(U%XNATURE(IL))
+ALLOCATE(U%XWATER (IL))
+ALLOCATE(U%XTOWN  (IL))
+!
+U%XSEA(:)   = ZSEA2   (:,1)
+U%XNATURE(:)= ZNATURE2(:,1)
+U%XWATER(:) = ZWATER2 (:,1)
+U%XTOWN(:)  = ZTOWN2  (:,1)
+!
+DEALLOCATE(ZSEA2)
+DEALLOCATE(ZNATURE2)
+DEALLOCATE(ZWATER2)
+DEALLOCATE(ZTOWN2)
+!
+ CALL CLEAN_PREP_OUTPUT_GRID
+!------------------------------------------------------------------------------
+!
+!*      5.     Coherence check
+!              ---------------
+! 
+ALLOCATE(ZSUM(IL))
+ZSUM = 0.
+DO JCOVER=1,SIZE(U%XCOVER,2)
+  ZSUM(:) = ZSUM(:) + U%XCOVER(:,JCOVER)
+END DO
+!
+DO JCOVER=1,SIZE(U%XCOVER,2)
+  WHERE(ZSUM(:)/=0.)  U%XCOVER(:,JCOVER) = U%XCOVER(:,JCOVER)/ZSUM(:)
+END DO
+!
+DO JCOVER=1,SIZE(U%XCOVER,2)
+  IF (ALL(U%XCOVER(:,JCOVER)==0.)) U%LCOVER(JCOVER) = .FALSE.
+END DO
+!------------------------------------------------------------------------------
+!
+!*      6.     Fractions
+!              ---------
+!
+! When the model runs in multiproc, NSIZE* represents the number of points
+! on a proc, and NDIM* the total number of points on all procs.
+! The following definition of NDIM* won't be correct any more when the PGD
+! runs in multiproc.
+!
+U%NSIZE_NATURE    = COUNT(U%XNATURE(:) > 0.0)
+U%NSIZE_WATER     = COUNT(U%XWATER (:) > 0.0)
+U%NSIZE_SEA       = COUNT(U%XSEA   (:) > 0.0)
+U%NSIZE_TOWN      = COUNT(U%XTOWN  (:) > 0.0)
+U%NSIZE_FULL      = IL
+!
+U%NDIM_NATURE    = SUM_ON_ALL_PROCS(HPROGRAM,UG%CGRID,U%XNATURE(:) > 0., 'DIM')
+U%NDIM_WATER     = SUM_ON_ALL_PROCS(HPROGRAM,UG%CGRID,U%XWATER (:) > 0., 'DIM')
+U%NDIM_SEA       = SUM_ON_ALL_PROCS(HPROGRAM,UG%CGRID,U%XSEA   (:) > 0., 'DIM')
+U%NDIM_TOWN      = SUM_ON_ALL_PROCS(HPROGRAM,UG%CGRID,U%XTOWN  (:) > 0., 'DIM')
+ZSUM=1.
+U%NDIM_FULL      = SUM_ON_ALL_PROCS(HPROGRAM,UG%CGRID,ZSUM   (:) ==1., 'DIM')
+DEALLOCATE(ZSUM)
+!
+ALLOCATE(U%NR_NATURE (U%NSIZE_NATURE))
+ALLOCATE(U%NR_TOWN   (U%NSIZE_TOWN  ))
+ALLOCATE(U%NR_WATER  (U%NSIZE_WATER ))
+ALLOCATE(U%NR_SEA    (U%NSIZE_SEA   ))
+!
+IF (U%NSIZE_SEA   >0)CALL GET_1D_MASK( U%NSIZE_SEA,    U%NSIZE_FULL, U%XSEA   , U%NR_SEA   )
+IF (U%NSIZE_WATER >0)CALL GET_1D_MASK( U%NSIZE_WATER,  U%NSIZE_FULL, U%XWATER , U%NR_WATER )
+IF (U%NSIZE_TOWN  >0)CALL GET_1D_MASK( U%NSIZE_TOWN,   U%NSIZE_FULL, U%XTOWN  , U%NR_TOWN  )
+IF (U%NSIZE_NATURE>0)CALL GET_1D_MASK( U%NSIZE_NATURE, U%NSIZE_FULL, U%XNATURE, U%NR_NATURE)
+IF (LHOOK) CALL DR_HOOK('ZOOM_PGD_COVER',1,ZHOOK_HANDLE)
+
+!_______________________________________________________________________________
+!
+END SUBROUTINE ZOOM_PGD_COVER