diff --git a/src/LIB/MEGAN/emproc.F90 b/src/LIB/MEGAN/emproc.F90
index 508a9265c037e86dbc638f01da77eacdd8a2b3b9..7cb60b64fe78f2edf40e1ed4266b6fce9b213d96 100644
--- a/src/LIB/MEGAN/emproc.F90
+++ b/src/LIB/MEGAN/emproc.F90
@@ -1,5 +1,5 @@
 
-SUBROUTINE EMPROC(KTIME, KDATE, PPFD_D, PTEMP_D, PDI, PRECADJ, &
+SUBROUTINE EMPROC(KTIME, KDATE, PPFD24, T24, PDI, PRECADJ, &
                   PLAT, PLONG, PLAIP, PLAIC, PTEMP, PPFD,      &
                   PWIND, PRES, PQV,  KSLTYP, PSOILM, PSOILT,  &
                   PFTF,  OSOIL, PCFNO, PCFNOG, PCFSPEC )
@@ -67,7 +67,7 @@ SUBROUTINE EMPROC(KTIME, KDATE, PPFD_D, PTEMP_D, PDI, PRECADJ, &
 !
 !        FINAL EQUATION
 !             EMISSION = [EF][GAMMA_LAI][GAMMA_AGE]*
-!    { (1-LDF)[GAMMA_TLI] + [LDF][GAMMA_P][GAMMA_TLD] }  !FOR MEGAN2.1
+!    { (1-LDF)[GAMMA_TLI] + [LDF][GAMMA_P][GAMMA_TLD] }  !FOR MEGAN2.1   ZER(:) = ZGAM_AGE * ZGAM_SMT * ZRHO * ((1.-ZLDF) * ZGAM_TLI * ZGAM_LHT + ZLDF * ZGAM_TLD)
 !         WHERE GAMMA_TLI IS LIGHT INDEPENDENT
 !               GAMMA_TLD IS LIGHT DEPENDENT  
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -85,8 +85,8 @@ IMPLICIT NONE
 INTEGER,            INTENT(IN)    :: KTIME    !I TIME OF THE DAY HHMMSS
 INTEGER,            INTENT(IN)    :: KDATE    !I DATE YYYYDDD
 !
-REAL, INTENT(IN) :: PPFD_D   !I DAILY PAR (UMOL/M2.S)
-REAL, INTENT(IN) :: PTEMP_D  !I DAILY TEMPERATURE (K)
+!REAL, INTENT(IN) :: PPFD_D   !I DAILY PAR (UMOL/M2.S)
+REAL, DIMENSION(:), INTENT(IN) :: T24, PPFD24  !I DAILY TEMPERATURE (K)
 REAL, INTENT(IN) :: PDI      !I DROUGHT INDEX (0 NORMAL, -2  MODERATE DROUGHT, -3 SEVERE DROUGHT, -4 EXTREME DROUGHT)
 REAL, INTENT(IN) :: PRECADJ  !I RAIN ADJUSTMENT FACTOR
 !
@@ -121,16 +121,17 @@ CHARACTER(LEN=100), DIMENSION(N_MGN_SPC+7) :: YVNAME3D
 !
 REAL, DIMENSION(SIZE(PSOILM)) :: ZADJUST_FACTOR_LD, ZADJUST_FACTOR_LI
 REAL, DIMENSION(SIZE(PSOILM)) :: ZGAMMA_TD, ZGAMMA_TI, ZTOTALPFT
+
 REAL :: ZLDF             ! LIGHT DEPENDENT FACTOR
 REAL :: ZRHO             ! PRODUCTION AND LOSS WITHIN CANOPY
-REAL :: ZPFD_D
+!REAL :: ZPFD_D
 !
 INTEGER :: I_PFT
 INTEGER :: ILAIP_DY, ILAIP_HR, ILAIC_DY, ILAIC_HR
 INTEGER :: IMXPFT, IMXLAI
 
 ! LOOP INDICES
-INTEGER :: JT, JS, JI, JJ , JK, JN, INP    ! COUNTERS
+INTEGER :: JT, JS, JI, JJ , JK, JN, INP, JL    ! COUNTERS
 INTEGER :: INMAP            ! INDEX
 INTEGER :: INVARS3D 
 
@@ -144,6 +145,7 @@ INTEGER :: INVARS3D
 !.....1) INITIALIZATION
 !-----------------------------------------------------------------------
 !
+
 INVARS3D = N_MGN_SPC + 7
 !
 DO JS = 1,N_MGN_SPC
@@ -204,7 +206,7 @@ INP = SIZE(PLAT)
 ! UPG PT bug: SURFEX give PAR in UMOL M-2 S-1 : comment the lines above
 !ZPFD_D = PPFD_D * 4.5 * 0.5
 
-ZPFD_D = PPFD_D
+!ZPFD_D = PPFD24
 
 !PPFD   = PPFD   * 4.5
 !UPG PT end bug
@@ -225,31 +227,34 @@ DO JS = 1, N_MGN_SPC
   PCFNOG   = 1.
 
   CALL GAMMA_LAI(PLAIC, ZGAM_LHT)
+ 
+! IF (JS == 1) print*, "ZGAM_LHT", ZGAM_LHT
 
-  CALL GAMMA_A(KDATE, KTIME, NTSTLEN, YVNAME3D(JS), PTEMP_D, PLAIP, PLAIC, ZGAM_AGE)
+  CALL GAMMA_A(KDATE, KTIME, NTSTLEN, YVNAME3D(JS), T24, PLAIP, PLAIC, ZGAM_AGE)
 
-  CALL GAMMA_S(ZGAM_SMT)
+! IF (JS == 1) print*, "ZGAM_AGE", ZGAM_AGE
+ 
+ CALL GAMMA_S(ZGAM_SMT)
 
   ZADJUST_FACTOR_LD(:) = 0.0
   ZADJUST_FACTOR_LI(:) = 0.0
   ZGAMMA_TD(:) = 0.0
   ZGAMMA_TI(:) = 0.0
   ZTOTALPFT(:) = 0.0
-
+  
   DO I_PFT = 1,N_MGN_PFT  !CANOPY TYPES
-    ZTOTALPFT(:) = ZTOTALPFT(:) + PFTF(I_PFT,:) * 0.01
+    ZTOTALPFT(:) = ZTOTALPFT(:) + PFTF(I_PFT,:) * 0.01    !!la division par 100 ZTOTALPFT(:) = ZTOTALPFT(:) + PFTF(I_PFT,:) * 0.01
   ENDDO   ! ENDDO I_PFT
 
   DO I_PFT = 1,N_MGN_PFT  !CANOPY TYPES
 
     CALL GAMME_CE(KDATE, KTIME, XCANOPYCHAR, I_PFT, YVNAME3D(JS), &
-                  ZPFD_D, ZPFD_D, PTEMP_D, PTEMP_D, PDI,          &
+                  PPFD24, PPFD24, T24, T24, PDI,          &
                   PPFD, PLAT, PLONG, PTEMP, PWIND, PQV, PLAIC,    &
                   PRES,  ZGAMMA_TD, ZGAMMA_TI)
-
-    ZADJUST_FACTOR_LD(:) = ZADJUST_FACTOR_LD(:) + 0.01 * PFTF(I_PFT,:) * ZGAMMA_TD(:)
-    ZADJUST_FACTOR_LI(:) = ZADJUST_FACTOR_LI(:) + 0.01 * PFTF(I_PFT,:) * ZGAMMA_TI(:)
-
+    
+    ZADJUST_FACTOR_LD(:) = ZADJUST_FACTOR_LD(:) + 0.01 * PFTF(I_PFT,:) * ZGAMMA_TD(:)   !!ZADJUST_FACTOR_LD(:) = ZADJUST_FACTOR_LD(:) + 0.01 * PFTF(I_PFT,:) * ZGAMMA_TD(:)
+    ZADJUST_FACTOR_LI(:) = ZADJUST_FACTOR_LI(:) + 0.01 * PFTF(I_PFT,:) * ZGAMMA_TI(:)    !! attention le 0.01 ZADJUST_FACTOR_LI(:) = ZADJUST_FACTOR_LI(:) + 0.01 * PFTF(I_PFT,:) * ZGAMMA_TI(:)
   ENDDO   ! ENDDO I_PFT
 
   WHERE (ZTOTALPFT(:).GT.0.) 
@@ -259,22 +264,25 @@ DO JS = 1, N_MGN_SPC
     ZGAM_TLD(:) = 1.
     ZGAM_TLI(:) = 1.
   END WHERE
-
-  INMAP = INDEX1(YVNAME3D(JS), CMGN_SPC)
+  
+ !IF (JS == 1) print*, "ZGAM_TLD(:)", ZGAM_TLD(:)
+ 
+ INMAP = INDEX1(YVNAME3D(JS), CMGN_SPC)
   ZLDF  = XLDF_FCT(INMAP)
   INMAP = INDEX1(YVNAME3D(JS), CMGN_SPC)
   ZRHO  = XMGN_MWT(INMAP)
 
+
 !...  CALCULATE EMISSION
   ZER(:) = ZGAM_AGE * ZGAM_SMT * ZRHO * ((1.-ZLDF) * ZGAM_TLI * ZGAM_LHT + ZLDF * ZGAM_TLD)
   WHERE( ZER(:).GT.0. ) 
     PCFSPEC(JS,:) = ZER(:)
   ELSEWHERE
     PCFSPEC(JS,:) = 0.0
-  ENDWHERE
-
+  END WHERE
+  
 ENDDO
-
+  
 !...  ESTIATE CFNO AND CFNOG
 CALL SOILNOX(KDATE, KTIME, OSOIL, KSLTYP, PRECADJ, &
              PLAT, PTEMP, PSOILM, PSOILT, PLAIC,  PCFNO, PCFNOG )
diff --git a/src/LIB/MEGAN/mgn2mech.F90 b/src/LIB/MEGAN/mgn2mech.F90
index 9758d3c711f1ef97f5f01ddfa06df9c22f2bdf89..f6c19ec072edb64c51c7edee483edd230aa6d4aa 100644
--- a/src/LIB/MEGAN/mgn2mech.F90
+++ b/src/LIB/MEGAN/mgn2mech.F90
@@ -95,7 +95,7 @@ REAL, DIMENSION(:,:),INTENT(INOUT)  :: PFLUX   !IO  EMISSION FLUX IN MOL/M2/S
 
 REAL, DIMENSION(N_SPCA_SPC,SIZE(PFLUX,2)) :: ZTMPER     ! TEMP EMISSION BUFFER
 REAL, DIMENSION(SIZE(PFLUX,1),SIZE(PFLUX,2)) :: ZOUTER     ! OUTPUT EMISSION BUFFER
-REAL, DIMENSION(SIZE(PLAT)) :: ZTMP1, ZTMP2, ZTMP3
+REAL, DIMENSION(SIZE(PLAT)) :: ZTMP1, ZTMP2, ZTMP3, ZTMP4
 REAL :: ZTMO1, ZTMO2, ZTMO3
 REAL :: Z2CRATIO
 
@@ -168,10 +168,18 @@ DO JS = 1, N_SMAP_SPC
 
       !... USE PFT-EF
       ZTMP3(:) = 0.0
+      ZTMP4(:) = 0.0
       DO JM = 1,N_MGN_PFT
-        ZTMP3 = ZTMP3 + XEF_ALL(JM,JMPMG) * XEFFS_ALL(JM,JMPSP) * PPFT(JM,:)/100.
+        !ZTMP3 = ZTMP3 + XEF_ALL(JM,JMPMG) * XEFFS_ALL(JM,JMPSP) * PPFT(JM,:)/100.
+        ZTMP4(:) = ZTMP4(:) + PPFT(JM,:) 
+        ZTMP3(:) = ZTMP3(:) + XEF_ALL(JM,JMPMG) * XEFFS_ALL(JM,JMPSP) * PPFT(JM,:)  ! bug S. Oumami
       ENDDO
-      ZTMPER(JMPSP,:) = PCFSPEC(JMPMG,:) * ZTMP3(:)
+      WHERE( ZTMP4(:).EQ.0. )
+        ZTMPER(JMPSP,:) = 0.
+      ELSEWHERE
+        ZTMPER(JMPSP,:) = PCFSPEC(JMPMG,:) * ZTMP3(:) / ZTMP4(:)
+      ENDWHERE
+
 
     ENDIF
 
diff --git a/src/LIB/MEGAN/mode_gamma_etc.F90 b/src/LIB/MEGAN/mode_gamma_etc.F90
index 098c29df77b9adbd49a254a729978157ebe9afba..04a1b209106bbb8b2f8f99a5a2b731cc65fe9041 100644
--- a/src/LIB/MEGAN/mode_gamma_etc.F90
+++ b/src/LIB/MEGAN/mode_gamma_etc.F90
@@ -185,7 +185,7 @@ IMPLICIT NONE
 ! INPUT
 INTEGER, INTENT(IN) :: KDATE, KTIME, KTSTLEN
 CHARACTER(LEN=16), INTENT(IN) :: HSPC_NAME
-REAL, INTENT(IN) :: PTEMP_D
+REAL, DIMENSION(:), INTENT(IN) :: PTEMP_D
 REAL, DIMENSION(:), INTENT(IN) :: PLAIARP, PLAIARC
 ! OUTPUT
 REAL,DIMENSION(:),INTENT(OUT) :: PGAM_A
@@ -207,14 +207,15 @@ IAINDX = NREA_INDEX(ISPCNUM)
 !
 !---------------------------------------------------        
 ! LOCAL PARAMETER ARRAYS
-IF ( PTEMP_D.LE.303. ) THEN 
-  ZTI = 5.0 + 0.7*(300.-PTEMP_D)
-ELSE 
-  ZTI = 2.9
-ENDIF
-ZTM = 2.3 * ZTI
-!
 DO JJ = 1,SIZE(PLAIARP)
+  IF ( PTEMP_D(JJ).LE.303. ) THEN 
+    ZTI = 5.0 + 0.7*(300.-PTEMP_D(JJ))
+  ELSE 
+    ZTI = 2.9
+  ENDIF
+    ZTM = 2.3 * ZTI
+!
+
 
 !... CALCULATE FOLIAGE FRACTION
 
diff --git a/src/LIB/MEGAN/mode_megan.F90 b/src/LIB/MEGAN/mode_megan.F90
index b2a1ac5235872e412a7b3bd3bb3324d19feb331b..584fda604460f5e9520796307a6719c89100c482 100644
--- a/src/LIB/MEGAN/mode_megan.F90
+++ b/src/LIB/MEGAN/mode_megan.F90
@@ -95,7 +95,7 @@ CONTAINS
 SUBROUTINE GAMME_CE(KDATE, KTIME, PCANOPYCHAR, KCANTYPE, HSPCNAME, &
                     PPFD24, PPFD240, PT24, PT240, PDI,             &
                     PPFD0, PLAT, PLONG, PTC, PWIND, PHUMIDITY,     &
-                    PLAI, PRES, PEA1CANOPY, PEATICANOPY )
+                    PLAI, PRES, PEA1CANOPY, PEATICANOPY)   !!
 !
 IMPLICIT NONE
 ! INPUT
@@ -103,8 +103,8 @@ INTEGER,INTENT(IN) :: KDATE, KTIME, KCANTYPE
 REAL,DIMENSION(:,:),INTENT(IN) :: PCANOPYCHAR
 CHARACTER(LEN=16), INTENT(IN) :: HSPCNAME
 !
-REAL, INTENT(IN) :: PPFD24, PPFD240
-REAL, INTENT(IN) :: PT24, PT240, PDI
+REAL, DIMENSION(:), INTENT(IN) :: PT24, PT240, PPFD24, PPFD240
+REAL, INTENT(IN) :: PDI
 !
 REAL, DIMENSION(:), INTENT(IN) :: PPFD0
 REAL, DIMENSION(:), INTENT(IN) :: PLONG, PLAT
@@ -119,7 +119,7 @@ REAL, DIMENSION(NLAYERS) :: ZVPGAUSWT, ZVPGAUSDIS2, ZVPGAUSDIS
 REAL, DIMENSION(SIZE(PLONG),NLAYERS) :: ZEA1LAYER, ZEATILAYER, ZVPSLWWT
 REAL, DIMENSION(SIZE(PLONG),NLAYERS) :: ZSUNFRAC, ZSUNQV, ZSHADEQV, ZSUNQN, ZSHADEQN, &
                                         ZSUNPPFD, ZSHADEPPFD, ZSUNLEAFTK, ZSHADELEAFTK, &
-                                        ZSUNLEAFSH, ZSHADELEAFSH
+                                        ZSUNLEAFSH, ZSHADELEAFSH, Z_PPFD, Z_ALPHAP
 !
 REAL, DIMENSION(SIZE(PLONG)) :: ZHOUR, ZSINBETA, ZSOLAR,    &
                                 ZMAXSOLAR, ZQDIFFV, ZQBEAMV, ZQDIFFN, ZQBEAMN, &
@@ -146,6 +146,7 @@ ELSEWHERE ( ZHOUR.GT.24. )
 END WHERE
 !
 CALL SOLARANGLE(IDAY, ZHOUR, PLAT, ZSINBETA)
+
 !
 ZSOLAR   (:) = PPFD0(:)/2.25
 ZMAXSOLAR(:) = ZSINBETA(:) * XSOLARCONSTANT * CALCECCENTRICITY(IDAY(:))
@@ -184,7 +185,7 @@ DO JI = 1,SIZE(ZEA1LAYER,2)
 ! PSTD = 50 FOR SHADE LEAVES
   !ZEA1PLAYER(:,JI) = EA1P99(ZSUNPPFD(:,JI), PPFD24*0.5,  PPFD240*0.5,  XPSTD_SUN)   *     ZSUNFRAC(:,JI) + &
   !                 EA1P99(ZSHADEPPFD(:,JI), PPFD24*0.16, PPFD240*0.16, XPSTD_SHADE) * (1.-ZSUNFRAC(:,JI)) 
-
+  
   ZEA1LAYER(:,JI) = EA1T99(HSPCNAME   , PT24       , PT240       , ZSUNLEAFTK  (:,JI)) * &
                     EA1P99(XPSTD_SUN  , PPFD24*0.5 , PPFD240*0.5 , ZSUNPPFD    (:,JI)) * ZSUNFRAC(:,JI) +  &
                     EA1T99(HSPCNAME   , PT24       , PT240       , ZSHADELEAFTK(:,JI)) * &
@@ -193,6 +194,14 @@ DO JI = 1,SIZE(ZEA1LAYER,2)
   ZEATILAYER(:,JI) = EALTI99(HSPCNAME, ZSUNLEAFTK  (:,JI)) * ZSUNFRAC(:,JI) +  &
                      EALTI99(HSPCNAME, ZSHADELEAFTK(:,JI)) * (1-ZSUNFRAC(:,JI))
 
+  Z_PPFD(:,JI) = ZSUNPPFD(:,JI) * ZSUNFRAC(:,JI) + ZSHADEPPFD(:,JI) * (1.-ZSUNFRAC(:,JI))
+  
+  Z_ALPHAP(:,JI) = EA1P99(XPSTD_SUN  , PPFD24*0.5 , PPFD240*0.5 , ZSUNPPFD    (:,JI)) * ZSUNFRAC(:,JI) +  &
+  	           EA1P99(XPSTD_SHADE, PPFD24*0.16, PPFD240*0.16, ZSHADEPPFD  (:,JI) ) * (1.-ZSUNFRAC(:,JI))  !!
+ ! IF (KCANTYPE == 15) THEN 
+  !  PRINT*, JI, ZSUNPPFD(:,JI)
+  !ENDIF
+
 ENDDO
 
 CALL WEIGHTSLW(ZVPGAUSDIS, PLAI, ZVPSLWWT)
@@ -207,8 +216,10 @@ DO JJ = 1,SIZE(PEA1CANOPY)
 !                   ZSHADELEAFSH(JJ,:) * (1 - ZSUNFRAC(:,JJ))) * PLAI(:) * ZVPGAUSWT(:) )  
 ENDDO
 
+
 PEA1CANOPY(:)  = PEA1CANOPY(:) * XCCE * PLAI(:)
 
+
 END SUBROUTINE  GAMME_CE
 
 !OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
@@ -362,7 +373,7 @@ DO JJ = 1,SIZE(PSOLAR)
   IF (ZPPFDDIFFRAC > 1.0) ZPPFDDIFFRAC = 1.0
 
   ZQV = ZPPFDFRAC * PSOLAR(JJ)
-  PQDIFFV(JJ) = ZQV * ZPPFDDIFFRAC
+  PQDIFFV(JJ) = ZQV * ZPPFDDIFFRAC 
   PQBEAMV(JJ) = ZQV - PQDIFFV(JJ)
   ZQN = PSOLAR(JJ) - ZQV
   PQDIFFN(JJ) =  ZQN * ZFRACDIFF
@@ -438,12 +449,14 @@ DO JI = 1,NLAYERS
 !FRACTION OF LEAVES THAT ARE SUNLIT
   PSUNFRAC(:,JI) = EXP(-ZKB(:) * ZLAIDEPTH(:))
 
-  CALL CALCRADCOMPONENTS(ZSCATV, ZREFLDV, PQDIFFV, PQBEAMV, ZKDPV, ZKBPV, ZKB, &
+
+  CALL CALCRADCOMPONENTS(ZSCATV, ZREFLDV, PQDIFFV, PQBEAMV, ZKDPV, ZKBPV, ZKB, &                          
                          ZREFLBV, ZLAIDEPTH, ZQDABSVL, ZQSABSVL)
 
   CALL CALCRADCOMPONENTS(ZSCATN, ZREFLDN, PQDIFFN, PQBEAMN, ZKDPN, ZKBPN, ZKB, &
                          ZREFLBN, ZLAIDEPTH, ZQDABSNL, ZQSABSNL)
 
+
   PSHADEPPFD(:,JI) = (ZQDABSVL(:) + ZQSABSVL(:))    * XCONVERTSHADEPPFD / (1. - ZSCATV)
   PSUNPPFD  (:,JI) = PSHADEPPFD(:,JI) + (ZQBABSV(:) * XCONVERTSUNPPFD   / (1. - ZSCATV))
   PSHADEQV  (:,JI) = ZQDABSVL(:)    + ZQSABSVL(:)
@@ -454,13 +467,15 @@ DO JI = 1,NLAYERS
   IF (PRESENT(PQSABSV)) PQSABSV   (:,JI) = ZQSABSVL(:)
   IF (PRESENT(PQDABSN)) PQDABSN   (:,JI) = ZQDABSNL(:)
   IF (PRESENT(PQSABSN)) PQSABSN   (:,JI) = ZQSABSNL(:)  
+!
 
 ENDDO
 
+
 DO JJ = 1,SIZE(PQBEAMV)
 
   IF ( (PQBEAMV(JJ)+PQDIFFV(JJ))<=0.001 .OR. PSINBETA(JJ)<=0.00002 .OR. PLAI(JJ)<=0.001 ) THEN
-          ! DAYTIME
+          ! NIGHT TIME
     ZQBABSV(JJ) = 0.
     ZQBABSN(JJ) = 0.
 
@@ -527,7 +542,7 @@ END SUBROUTINE CALCEXTCOEFF
 !OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
 
 SUBROUTINE CALCRADCOMPONENTS(PSCAT, PREFLD, PQDIFF, PQBEAM, PKDP, PKBP, PKB,   &
-                             PREFLB, PLAIDEPTH, PQDABS, PQSABS)
+                             PREFLB, PLAIDEPTH, PQDABS, PQSABS) 
 
 IMPLICIT NONE
 
@@ -537,6 +552,7 @@ REAL, DIMENSION(:), INTENT(OUT) :: PQDABS, PQSABS
 !-------------------------------------------------------------------
 
 PQDABS(:) = PQDIFF(:) *   PKDP(:) * (1. - PREFLD)    * EXP(-PKDP(:) * PLAIDEPTH(:))
+
 PQSABS(:) = PQBEAM(:) * ((PKBP(:) * (1. - PREFLB(:)) * EXP(-PKBP(:) * PLAIDEPTH(:))) &
                         - (PKB(:) * (1. - PSCAT)     * EXP(-PKB (:) * PLAIDEPTH(:))))
 
@@ -1123,8 +1139,7 @@ USE MODI_INDEX1
 IMPLICIT NONE
 
 CHARACTER(LEN=16),INTENT(IN) :: HSPC_NAME
-REAL, INTENT(IN) :: PT24, PT240
-REAL, DIMENSION(:), INTENT(IN) :: PT1
+REAL, DIMENSION(:), INTENT(IN) :: PT1, PT24, PT240
 REAL, DIMENSION(SIZE(PT1)) :: PEA1T99
 REAL :: ZTOPT, ZX, ZEOPT
 INTEGER :: ISPCNUM
@@ -1134,17 +1149,17 @@ INTEGER :: JJ
 ISPCNUM = INDEX1(HSPC_NAME, CMGN_SPC)
 !
 DO JJ = 1,SIZE(PT1)
-
   IF ( PT1(JJ)<260. ) THEN
     PEA1T99(JJ) = 0.
   ELSE
     ! ENERGY OF ACTIVATION AND DEACTIVATION
     ! TEMPERATURE AT WHICH MAXIMUM EMISSION OCCURS
-    ZTOPT = 312.5 + 0.6 * (PT240 - 297)
+    ZTOPT = 312.5 + 0.6 * (PT240(JJ) - 297)
     ZX    = ((1 / ZTOPT) - (1 / PT1(JJ))) / 0.00831
 
     ! MAXIMUM EMISSION (RELATIVE TO EMISSION AT 30 C)
-    ZEOPT = XCLEO(ISPCNUM) * EXP(0.05 * (PT24 - 297)) * EXP(0.05*(PT240-297))         
+    ZEOPT = XCLEO(ISPCNUM) * EXP(0.05 * (PT24(JJ) - 297)) * EXP(0.05*(PT240(JJ)-297))   
+      
     PEA1T99(JJ) = ZEOPT * XCTM2 * EXP(XCTM1(ISPCNUM)*ZX) / &
                 (XCTM2 - XCTM1(ISPCNUM) * (1.-EXP(XCTM2*ZX)))
   ENDIF
@@ -1165,8 +1180,8 @@ FUNCTION EA1P99(PSTD, PPFD24, PPFD240, PPFD1) RESULT(PEA1P99)
 
 IMPLICIT NONE
 
-REAL, INTENT(IN) :: PSTD, PPFD24, PPFD240
-REAL, DIMENSION(:), INTENT(IN) :: PPFD1
+REAL, INTENT(IN) :: PSTD
+REAL, DIMENSION(:), INTENT(IN) :: PPFD1, PPFD24, PPFD240
 REAL, DIMENSION(SIZE(PPFD1)) :: PEA1P99
 REAL :: ZALPHA, ZC1
 INTEGER :: JJ
@@ -1174,11 +1189,11 @@ INTEGER :: JJ
 
 DO JJ = 1,SIZE(PPFD1)
 
-  IF ( PPFD240<0.01 ) THEN
+  IF ( PPFD240(JJ)<0.01 ) THEN
     PEA1P99(JJ) = 0.
   ELSE
-    ZALPHA  = 0.004 - 0.0005 * LOG(PPFD240)
-    ZC1     = 0.0468 * EXP(0.0005 * (PPFD24 - PSTD)) * (PPFD240**0.6)
+    ZALPHA  = 0.004 - 0.0005 * LOG(PPFD240(JJ))
+    ZC1     = 0.0468 * EXP(0.0005 * (PPFD24(JJ) - PSTD)) * (PPFD240(JJ)**0.6)
     PEA1P99(JJ) = (ZALPHA * ZC1 * PPFD1(JJ)) / ((1 + ZALPHA**2. * PPFD1(JJ)**2.)**0.5)
   ENDIF