diff --git a/MNH/ppm.f90 b/MNH/ppm.f90
index ccd14da9d204eb8fe0c09588e91c35391d429319..6c8e4bd35aaff3bf55ed86239889c730e86c09a0 100644
--- a/MNH/ppm.f90
+++ b/MNH/ppm.f90
@@ -721,6 +721,8 @@ USE MODD_LUNIT
 USE MODD_PARAMETERS, ONLY : JPHEXT
 USE MODE_MPPDB
 !
+USE MODE_MNH_ZWORK, ONLY : ZQL,ZQR,ZDQ,ZQ6,ZDMQ,ZQL0,ZQR0,ZQ60,ZFPOS,ZFNEG
+!
 IMPLICIT NONE
 !
 !*       0.1   Declarations of dummy arguments :
@@ -742,12 +744,12 @@ REAL, DIMENSION(:,:,:), INTENT(OUT) :: PR
 !*       0.2   Declarations of local variables :
 !
 ! terms used in parabolic interpolation, dmq, qL, qR, dq, q6
-REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: &
-     ZQL,ZQR , ZDQ,ZQ6 , ZDMQ & 
+!$$ REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: &
+     !$$ ZQL,ZQR , ZDQ,ZQ6 , ZDMQ & 
 ! extra variables for the initial guess of parabolae parameters
-    , ZQL0,ZQR0,ZQ60 &
+    !$$ , ZQL0,ZQR0,ZQ60 &
 ! advection fluxes
-    , ZFPOS, ZFNEG
+    !$$ , ZFPOS, ZFNEG
 
 
 INTEGER:: IIB,IJB    ! Begining useful area in x,y,z directions
@@ -803,8 +805,9 @@ CALL GET_HALO_D(PSRC,HDIR="01_Y")
 !
 #define JUAN_ACC_01_Y
 #ifdef JUAN_ACC_01_Y
-!$acc data region local (ZQL,ZQR,ZDQ,ZQ6,ZDMQ,ZQL0,ZQR0,ZQ60,ZFPOS,ZFNEG) 
-!$acc region
+!$acc data 
+! create/mirror (ZQL,ZQR,ZDQ,ZQ6,ZDMQ,ZQL0,ZQR0,ZQ60,ZFPOS,ZFNEG) 
+!$acc kernels
 #endif
 PR=PSRC
 ZQL=PSRC
@@ -817,7 +820,7 @@ ZQR0=PSRC
 ZQ60=PSRC
 ZFPOS=PSRC
 ZFNEG=PSRC
-!#acc end region
+! acc end region
 !
 !!$SELECT CASE ( HLBCY(1) ) ! Y direction LBC type: (1) for left side
 !!$!
@@ -974,9 +977,9 @@ ZFNEG=PSRC
 !  update ZDMQ HALO before next/further  utilisation 
 !
 #ifdef TEMPO_JUAN   
-!$acc end region   
+!$acc end kernels   
 CALL  GET_HALO_D(ZDMQ,HDIR="01_Y")  
-!$acc region   
+!$acc kernels   
 #endif
 !
 ! calculate qL and qR with the modified dmq
@@ -994,9 +997,9 @@ CALL  GET_HALO_D(ZDMQ,HDIR="01_Y")
 !!$   !#acc end region
 !
 #ifdef TEMPO_JUAN  
-!$acc end region    
+!$acc end kernels    
 CALL  GET_HALO_D(ZQL0,HDIR="01_Y")
-!$acc region   
+!$acc kernels   
 #endif
 !  
 !  SOUTH BOUND
@@ -1084,9 +1087,9 @@ CALL  GET_HALO_D(ZQL0,HDIR="01_Y")
 !!$   !#acc end region 
 !
 #ifdef TEMPO_JUAN
-!$acc end region   
+!$acc end kernels   
 CALL GET_HALO_D(ZFPOS,HDIR="01_Y")
-!$acc region   
+!$acc kernels   
 #endif
 !
 !
@@ -1118,9 +1121,9 @@ CALL GET_HALO_D(ZFPOS,HDIR="01_Y")
 !!$   !#acc end region 
 !
 #ifdef TEMPO_JUAN
-!$acc end region   
+!$acc end kernels   
    CALL GET_HALO_D(ZFNEG,HDIR="01_Y")
-!$acc region   
+!$acc kernels   
 #endif
 !
 ! advection flux at open boundary when u(IJE+1) < 0
@@ -1149,8 +1152,8 @@ CALL GET_HALO_D(ZFPOS,HDIR="01_Y")
 !!$!
 
 #ifdef JUAN_ACC_01_Y
-!$acc end region 
-!$acc end data region 
+!$acc end kernels 
+!$acc end data 
 #endif
 
    CALL GET_HALO_D(PR,HDIR="01_Y")
@@ -1247,6 +1250,8 @@ USE MODD_CONF
 USE MODD_PARAMETERS
 USE MODE_MPPDB
 !
+USE MODE_MNH_ZWORK, ONLY : ZQL,ZQR,ZDQ,ZQ6,ZDMQ,ZQL0,ZQR0,ZQ60,ZFPOS,ZFNEG
+!
 IMPLICIT NONE
 !
 !*       0.1   Declarations of dummy arguments :
@@ -1265,14 +1270,14 @@ REAL, DIMENSION(:,:,:), INTENT(OUT) :: PR
 !*       0.2   Declarations of local variables :
 !
 ! terms used in parabolic interpolation, dmq, qL, qR, dq, q6
-REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: &
-                                                      ZQL, ZQR, ZDQ, ZQ6, ZDMQ &
+!$$ REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: &
+!$$                                                      ZQL, ZQR, ZDQ, ZQ6, ZDMQ &
 !
 ! extra variables for the initial guess of parabolae parameters
-                                                     , ZQL0,ZQR0,ZQ60 &
+!$$                                                     , ZQL0,ZQR0,ZQ60 &
 !
 ! advection fluxes
-                                                     , ZFPOS, ZFNEG
+!$$                                                     , ZFPOS, ZFNEG
 !
 INTEGER:: IKB    ! Begining useful area in x,y,z directions
 INTEGER:: IKE    ! End useful area in x,y,z directions
@@ -1302,8 +1307,9 @@ IKU=size(psrc,3)
 
 #define JUAN_ACC_01_Z
 #ifdef JUAN_ACC_01_Z
-!$acc data region local (ZDMQ,ZQL0,ZQR0,ZDQ,ZQ60,ZQL,ZQR,ZQ6,ZFPOS,ZFNEG)
-!$acc region  
+!$acc data 
+! create/mirror (ZDMQ,ZQL0,ZQR0,ZDQ,ZQ60,ZQL,ZQR,ZQ6,ZFPOS,ZFNEG)
+!$acc kernels  
 #endif
 !
 !-------------------------------------------------------------------------------
@@ -1411,8 +1417,8 @@ ZFNEG(:,:,IKE+1) = (ZQR(:,:,IKE)-PSRC(:,:,IKE+1))*PCR(:,:,IKE+1) + &
 !!$                          ZFNEG*(0.5-SIGN(0.5,PCR)) ) )
 
 #ifdef JUAN_ACC_01_Z
-!$acc end region
-!$acc end data region  
+!$acc end kernels
+!$acc end data 
 #endif
 
 CALL GET_HALO_D(PR)