diff --git a/src/MNH/modd_type_statprof.f90 b/src/MNH/modd_type_statprof.f90
index a95c1e11cabfbf1ad402db480a0c1233c014943b..8b8a7cffb7707f0cdfe9c913cb3d4a705e112e87 100644
--- a/src/MNH/modd_type_statprof.f90
+++ b/src/MNH/modd_type_statprof.f90
@@ -134,7 +134,7 @@ TYPE, EXTENDS( TSTATPROFDATA ) ::  TPROFILERDATA
   REAL, DIMENSION(:,:),   ALLOCATABLE :: XTKE       ! tke(n)
   REAL, DIMENSION(:,:),   ALLOCATABLE :: XTH        ! th(n)
   REAL, DIMENSION(:,:),   ALLOCATABLE :: XTHV       ! thv(n)
-  REAL, DIMENSION(:,:),   ALLOCATABLE :: XVISI      ! VISI(n)
+  REAL, DIMENSION(:,:),   ALLOCATABLE :: XVISIGUL   ! VISI GULTEPE(n)
   REAL, DIMENSION(:,:),   ALLOCATABLE :: XVISIKUN   ! VISI KUNKEL(n)
   REAL, DIMENSION(:,:),   ALLOCATABLE :: XCRARE     ! radar reflectivity (n)
   REAL, DIMENSION(:,:),   ALLOCATABLE :: XCRARE_ATT ! radar attenuated reflectivity (n)
diff --git a/src/MNH/profilern.f90 b/src/MNH/profilern.f90
index 7226a452defd415c6984d045ed308caa16be64ae..924527d0b9df55f4a3a4261086a1a81f891d86bc 100644
--- a/src/MNH/profilern.f90
+++ b/src/MNH/profilern.f90
@@ -91,7 +91,7 @@ END MODULE MODI_PROFILER_n
 USE MODD_CST,              ONLY: XCPD, XG, XLAM_CRAD, XLIGHTSPEED, XP00, XPI, XRD, XRHOLW, XRV, XTT
 USE MODD_DIAG_IN_RUN
 USE MODD_GRID,             ONLY: XBETA, XLON0, XRPK
-USE MODD_NSV,              ONLY: NSV_C2R2BEG, NSV_C2R2END, NSV_LIMA_NC, NSV_LIMA_NI, NSV_LIMA_NR
+USE MODD_NSV,              ONLY: NSV_C2R2, NSV_C2R2BEG, NSV_LIMA_NC, NSV_LIMA_NI, NSV_LIMA_NR
 USE MODD_PARAMETERS,       ONLY: JPVEXT, XUNDEF
 USE MODD_PARAM_LIMA,       ONLY: XALPHAR_L => XALPHAR, XNUR_L => XNUR, XALPHAS_L => XALPHAS, XNUS_L => XNUS, &
                                  XALPHAG_L => XALPHAG, XNUG_L => XNUG, XALPHAI_L => XALPHAI, XNUI_L => XNUI, &
@@ -199,7 +199,7 @@ REAL                       :: ZZWDR         ! ZWD correction at station location
 !
 REAL,DIMENSION(SIZE(PTH,1),SIZE(PTH,2))              :: ZZTD,ZZHD,ZZWD
 REAL,DIMENSION(SIZE(PTH,1),SIZE(PTH,2),SIZE(PTH,3))  :: ZTEMP,ZTHV,ZTEMPV
-REAL,DIMENSION(SIZE(PTH,1),SIZE(PTH,2),SIZE(PTH,3))  :: ZVISI,ZVISIKUN
+REAL,DIMENSION(SIZE(PTH,1),SIZE(PTH,2),SIZE(PTH,3))  :: ZVISIGUL, ZVISIKUN
 REAL ::  ZK1,ZK2,ZK3            ! k1, k2 and K3 atmospheric refractivity constants
 REAL  :: ZRDSRV                 ! XRD/XRV
 !
@@ -262,19 +262,22 @@ ZTHV(:,:,:) = PTH(:,:,:) / (1.+WATER_SUM(PR(:,:,:,:)))*(1.+PR(:,:,:,1)/ZRDSRV)
 ! virtual temperature
 ZTEMPV(:,:,:)=ZTHV(:,:,:)*(PP(:,:,:)/ XP00) **(XRD/XCPD)
 CALL GPS_ZENITH_GRID(PR(:,:,:,1),ZTEMP,PP,ZZTD,ZZHD,ZZWD)
-! Kunkel formulation
-IF (SIZE(PR,4) >= 2) THEN
+
+IF ( CCLOUD == 'C2R2' .OR. CCLOUD == 'KHKO' ) THEN
+  ! Gultepe formulation
+  ZVISIGUL(:,:,:) = 10E5 !default value
+  WHERE ( (PR(:,:,:,2) /=0. ) .AND. (PSV(:,:,:,NSV_C2R2BEG+1) /=0. ) )
+    ZVISIGUL(:,:,:) =1.002/(PR(:,:,:,2)*PRHODREF(:,:,:)*PSV(:,:,:,NSV_C2R2BEG+1))**0.6473
+  END WHERE
+END IF
+
+IF ( CCLOUD /= 'NONE' .AND. CCLOUD /= 'REVE' ) THEN
+  ! Kunkel formulation
   ZVISIKUN(:,:,:) = 10E5  !default value
   WHERE ( PR(:,:,:,2) /=0 )
     ZVISIKUN(:,:,:) =0.027/(10**(-8)+(PR(:,:,:,2)/(1+PR(:,:,:,2))*PRHODREF(:,:,:)*1000))**0.88
   END WHERE
 END IF
-! Gultepe formulation
-IF ((SIZE(PR,4) >= 2) .AND. NSV_C2R2END /= 0 ) THEN 
-  WHERE ( (PR(:,:,:,2) /=0. ) .AND. (PSV(:,:,:,NSV_C2R2BEG+1) /=0. ) )
-    ZVISI(:,:,:) =1.002/(PR(:,:,:,2)*PRHODREF(:,:,:)*PSV(:,:,:,NSV_C2R2BEG+1))**0.6473
-  END WHERE
-END IF
 !
 PROFILER: DO JP = 1, NUMBPROFILER_LOC
   ZZ(:)                  = STATPROF_INTERP_3D( TPROFILERS(JP), PZ )
@@ -369,8 +372,8 @@ PROFILER: DO JP = 1, NUMBPROFILER_LOC
   TPROFILERS(JP)%XW   (IN,:) = STATPROF_INTERP_3D( TPROFILERS(JP), PW )
   TPROFILERS(JP)%XTH  (IN,:) = STATPROF_INTERP_3D( TPROFILERS(JP), PTH )
   TPROFILERS(JP)%XTHV (IN,:) = STATPROF_INTERP_3D( TPROFILERS(JP), ZTHV )
-  TPROFILERS(JP)%XVISI(IN,:) = STATPROF_INTERP_3D( TPROFILERS(JP), ZVISI )
-  TPROFILERS(JP)%XVISIKUN(IN,:) = STATPROF_INTERP_3D( TPROFILERS(JP), ZVISIKUN )
+  IF ( CCLOUD == 'C2R2' .OR. CCLOUD == 'KHKO' )  TPROFILERS(JP)%XVISIGUL(IN,:) = STATPROF_INTERP_3D( TPROFILERS(JP), ZVISIGUL )
+  IF ( CCLOUD /= 'NONE' .AND. CCLOUD /= 'REVE' ) TPROFILERS(JP)%XVISIKUN(IN,:) = STATPROF_INTERP_3D( TPROFILERS(JP), ZVISIKUN )
   TPROFILERS(JP)%XZZ  (IN,:) = ZZ(:)
   TPROFILERS(JP)%XRHOD(IN,:) = ZRHOD(:)
   IF ( CCLOUD == 'ICE3' .OR. CCLOUD == 'ICE4' ) &
diff --git a/src/MNH/statprof_tools.f90 b/src/MNH/statprof_tools.f90
index a1daff5695c836a6ee4e7913b0732052427c4898..af3bc1eb87a956fbe623abe584000e150197cefe 100644
--- a/src/MNH/statprof_tools.f90
+++ b/src/MNH/statprof_tools.f90
@@ -66,8 +66,16 @@ SUBROUTINE PROFILER_ALLOCATE( TPPROFILER, KSTORE )
   END IF
   ALLOCATE( TPPROFILER%XTH       (KSTORE, IKU) )
   ALLOCATE( TPPROFILER%XTHV      (KSTORE, IKU) )
-  ALLOCATE( TPPROFILER%XVISI     (KSTORE, IKU) )
-  ALLOCATE( TPPROFILER%XVISIKUN  (KSTORE, IKU) )
+  IF ( CCLOUD == 'C2R2' .OR. CCLOUD == 'KHKO' ) THEN
+    ALLOCATE( TPPROFILER%XVISIGUL  (KSTORE, IKU) )
+  ELSE
+    ALLOCATE( TPPROFILER%XVISIGUL  (0, 0) )
+  END IF
+  IF ( CCLOUD /= 'NONE' .AND. CCLOUD /= 'REVE' ) THEN
+    ALLOCATE( TPPROFILER%XVISIKUN  (KSTORE, IKU) )
+  ELSE
+    ALLOCATE( TPPROFILER%XVISIKUN  (0, 0) )
+  END IF
   ALLOCATE( TPPROFILER%XCRARE    (KSTORE, IKU) )
   ALLOCATE( TPPROFILER%XCRARE_ATT(KSTORE, IKU) )
   IF ( CCLOUD == 'ICE3' .OR. CCLOUD == 'ICE4' ) THEN
@@ -117,8 +125,8 @@ SUBROUTINE PROFILER_ALLOCATE( TPPROFILER, KSTORE )
   IF ( CTURB == 'TKEL' ) TPPROFILER%XTKE(:,:) = XUNDEF
   TPPROFILER%XTH       (:,:) = XUNDEF
   TPPROFILER%XTHV      (:,:) = XUNDEF
-  TPPROFILER%XVISI     (:,:) = XUNDEF
-  TPPROFILER%XVISIKUN  (:,:) = XUNDEF
+  IF ( CCLOUD == 'C2R2' .OR. CCLOUD == 'KHKO' )  TPPROFILER%XVISIGUL(:,:) = XUNDEF
+  IF ( CCLOUD /= 'NONE' .AND. CCLOUD /= 'REVE' ) TPPROFILER%XVISIKUN(:,:) = XUNDEF
   TPPROFILER%XCRARE    (:,:) = XUNDEF
   TPPROFILER%XCRARE_ATT(:,:) = XUNDEF
   IF ( CCLOUD == 'ICE3' .OR. CCLOUD == 'ICE4' ) TPPROFILER%XCIZ      (:,:) = XUNDEF
diff --git a/src/MNH/write_profilern.f90 b/src/MNH/write_profilern.f90
index acda0bf50e09f11409c17bf2a9361ccfc73cc337..62264efabac858636ac5d392a24bd886aa440f36 100644
--- a/src/MNH/write_profilern.f90
+++ b/src/MNH/write_profilern.f90
@@ -140,7 +140,9 @@ CALL PROFILER_ALLOCATE( TZPROFILER, SIZE( tprofilers_time%tpdates ) )
 IF ( ISNPROC > 1 ) THEN
   ISTORE = SIZE( TPROFILERS_TIME%TPDATES )
   IPACKSIZE = 6
-  IPACKSIZE = IPACKSIZE + ISTORE * IKU * ( 16 + NRR + NSV + NAER )
+  IPACKSIZE = IPACKSIZE + ISTORE * IKU * ( 14 + NRR + NSV + NAER )
+  IF ( CCLOUD == 'C2R2' .OR. CCLOUD == 'KHKO' )  IPACKSIZE = IPACKSIZE + ISTORE * IKU !VISIGUL
+  IF ( CCLOUD /= 'NONE' .AND. CCLOUD /= 'REVE' ) IPACKSIZE = IPACKSIZE + ISTORE * IKU !VISIKUN
   IF ( CTURB == 'TKEL') IPACKSIZE = IPACKSIZE + ISTORE * IKU !Tke term
   IF ( CCLOUD == 'ICE3' .OR. CCLOUD == 'ICE4' ) IPACKSIZE = IPACKSIZE + ISTORE * IKU  !CIZ term
   IPACKSIZE = IPACKSIZE + 4 * ISTORE
@@ -186,8 +188,12 @@ PROFILER: DO JS = 1, INUMPROF
       END IF
       ZPACK(IPOS:IPOS+ISTORE*IKU-1) = RESHAPE( TPROFILERS(IDX)%XTH(:,:),        [ISTORE*IKU] ) ; IPOS = IPOS + ISTORE * IKU
       ZPACK(IPOS:IPOS+ISTORE*IKU-1) = RESHAPE( TPROFILERS(IDX)%XTHV(:,:),       [ISTORE*IKU] ) ; IPOS = IPOS + ISTORE * IKU
-      ZPACK(IPOS:IPOS+ISTORE*IKU-1) = RESHAPE( TPROFILERS(IDX)%XVISI(:,:),      [ISTORE*IKU] ) ; IPOS = IPOS + ISTORE * IKU
-      ZPACK(IPOS:IPOS+ISTORE*IKU-1) = RESHAPE( TPROFILERS(IDX)%XVISIKUN(:,:),   [ISTORE*IKU] ) ; IPOS = IPOS + ISTORE * IKU
+      IF ( CCLOUD == 'C2R2' .OR. CCLOUD == 'KHKO' ) THEN
+        ZPACK(IPOS:IPOS+ISTORE*IKU-1) = RESHAPE( TPROFILERS(IDX)%XVISIGUL(:,:), [ISTORE*IKU] ) ; IPOS = IPOS + ISTORE * IKU
+      END IF
+      IF ( CCLOUD /= 'NONE' .AND. CCLOUD /= 'REVE' ) THEN
+        ZPACK(IPOS:IPOS+ISTORE*IKU-1) = RESHAPE( TPROFILERS(IDX)%XVISIKUN(:,:), [ISTORE*IKU] ) ; IPOS = IPOS + ISTORE * IKU
+      END IF
       ZPACK(IPOS:IPOS+ISTORE*IKU-1) = RESHAPE( TPROFILERS(IDX)%XCRARE(:,:),     [ISTORE*IKU] ) ; IPOS = IPOS + ISTORE * IKU
       ZPACK(IPOS:IPOS+ISTORE*IKU-1) = RESHAPE( TPROFILERS(IDX)%XCRARE_ATT(:,:), [ISTORE*IKU] ) ; IPOS = IPOS + ISTORE * IKU
       IF ( CCLOUD == 'ICE3' .OR. CCLOUD == 'ICE4' ) THEN
@@ -264,8 +270,12 @@ PROFILER: DO JS = 1, INUMPROF
       END IF
       TZPROFILER%XTH(:,:)        = RESHAPE( ZPACK(IPOS:IPOS+ISTORE*IKU-1), [ ISTORE, IKU ] ) ; IPOS = IPOS + ISTORE * IKU
       TZPROFILER%XTHV(:,:)       = RESHAPE( ZPACK(IPOS:IPOS+ISTORE*IKU-1), [ ISTORE, IKU ] ) ; IPOS = IPOS + ISTORE * IKU
-      TZPROFILER%XVISI(:,:)      = RESHAPE( ZPACK(IPOS:IPOS+ISTORE*IKU-1), [ ISTORE, IKU ] ) ; IPOS = IPOS + ISTORE * IKU
-      TZPROFILER%XVISIKUN(:,:)   = RESHAPE( ZPACK(IPOS:IPOS+ISTORE*IKU-1), [ ISTORE, IKU ] ) ; IPOS = IPOS + ISTORE * IKU
+      IF ( CCLOUD == 'C2R2' .OR. CCLOUD == 'KHKO' ) THEN
+        TZPROFILER%XVISIGUL(:,:) = RESHAPE( ZPACK(IPOS:IPOS+ISTORE*IKU-1), [ ISTORE, IKU ] ) ; IPOS = IPOS + ISTORE * IKU
+      END IF
+      IF ( CCLOUD /= 'NONE' .AND. CCLOUD /= 'REVE' ) THEN
+        TZPROFILER%XVISIKUN(:,:) = RESHAPE( ZPACK(IPOS:IPOS+ISTORE*IKU-1), [ ISTORE, IKU ] ) ; IPOS = IPOS + ISTORE * IKU
+      END IF
       TZPROFILER%XCRARE(:,:)     = RESHAPE( ZPACK(IPOS:IPOS+ISTORE*IKU-1), [ ISTORE, IKU ] ) ; IPOS = IPOS + ISTORE * IKU
       TZPROFILER%XCRARE_ATT(:,:) = RESHAPE( ZPACK(IPOS:IPOS+ISTORE*IKU-1), [ ISTORE, IKU ] ) ; IPOS = IPOS + ISTORE * IKU
       IF ( CCLOUD == 'ICE3' .OR. CCLOUD == 'ICE4' ) THEN
@@ -393,8 +403,10 @@ jproc = 0
 
 call Add_profile( 'Th',       'Potential temperature',         'K',      tpprofiler%xth        )
 call Add_profile( 'Thv',      'Virtual Potential temperature', 'K',      tpprofiler%xthv       )
-call Add_profile( 'VISI',     'Visibility',                    'km',     tpprofiler%xvisi      )
-call Add_profile( 'VISIKUN',  'Visibility Kunkel',             'km',     tpprofiler%xvisikun   )
+if ( ccloud == 'C2R2' .or. ccloud == 'KHKO' ) &
+  call Add_profile( 'VISIGUL', 'Visibility Gultepe',           'km',     tpprofiler%xvisigul   )
+if ( ccloud /= 'NONE' .and. ccloud /= 'REVE' ) &
+  call Add_profile( 'VISIKUN', 'Visibility Kunkel',            'km',     tpprofiler%xvisikun   )
 call Add_profile( 'RARE',     'Radar reflectivity',            'dBZ',    tpprofiler%xcrare     )
 call Add_profile( 'RAREatt',  'Radar attenuated reflectivity', 'dBZ',    tpprofiler%xcrare_att )
 call Add_profile( 'P',        'Pressure',                      'Pa',     tpprofiler%xp         )