diff --git a/src/MNH/lima_warm_nucl.f90 b/src/MNH/lima_warm_nucl.f90
index ea473aa913b81b35f13c2d75b75ea03afa1d1e43..3d36703c3b2f4a7eb977ce640c6157dac0775301 100644
--- a/src/MNH/lima_warm_nucl.f90
+++ b/src/MNH/lima_warm_nucl.f90
@@ -172,6 +172,7 @@ REAL, DIMENSION(:)  , ALLOCATABLE  :: ZZT      ! Temperature
 REAL, DIMENSION(:), ALLOCATABLE    :: ZZW1, ZZW2, ZZW3, ZZW4, ZZW5, ZZW6, &
                                       ZCTMIN, &
                                       ZZTDT,          & ! dT/dt
+                                      ZSW,            & ! real supersaturation                                      
                                       ZSMAX,          & ! Maximum supersaturation
                                       ZVEC1
 !
@@ -273,6 +274,7 @@ IF( INUCT >= 1 ) THEN
    ALLOCATE(ZCCS(INUCT))
    ALLOCATE(ZZT(INUCT)) 
    ALLOCATE(ZZTDT(INUCT)) 
+   ALLOCATE(ZSW(INUCT))    
    ALLOCATE(ZZW1(INUCT))
    ALLOCATE(ZZW2(INUCT))
    ALLOCATE(ZZW3(INUCT))
@@ -290,6 +292,7 @@ IF( INUCT >= 1 ) THEN
       ZZW1(JL) = ZRVSAT(I1(JL),I2(JL),I3(JL))
       ZZW2(JL) = PW_NU(I1(JL),I2(JL),I3(JL))
       ZZTDT(JL)  = ZTDT(I1(JL),I2(JL),I3(JL))
+      ZSW(JL)  = PRVT(I1(JL),I2(JL),I3(JL))/ZRVSAT(I1(JL),I2(JL),I3(JL)) - 1.
       ZRHODREF(JL) = PRHODREF(I1(JL),I2(JL),I3(JL))
       ZEXNREF(JL)  = PEXNREF(I1(JL),I2(JL),I3(JL))
       DO JMOD = 1,NMOD_CCN
@@ -385,6 +388,7 @@ IF( INUCT >= 1 ) THEN
    ZXACC = 1.0E-7                 ! Accuracy needed for the search in [NO UNITS]
 !
    ZSMAX(:) = ZRIDDR(ZS1,ZS2,ZXACC,ZZW3(:),INUCT)    ! ZSMAX(:) is in [NO UNITS]
+   ZSMAX(:) = MIN(MAX(ZSMAX(:), ZSW(:)),ZS2)
 !
 !
 !-------------------------------------------------------------------------------
@@ -492,6 +496,7 @@ IF( INUCT >= 1 ) THEN
    DEALLOCATE(ZZW5)
    DEALLOCATE(ZZW6)
    DEALLOCATE(ZZTDT)
+   DEALLOCATE(ZSW)
    DEALLOCATE(ZRHODREF)
    DEALLOCATE(ZCHEN_MULTI)
    DEALLOCATE(ZEXNREF)