diff --git a/obl_pph.f90 b/obl_pph.f90
index ceebd3de6c316c919631464b95e413f331461b02..3c27ca8134529975f5974abc393783c820c9a893 100644
--- a/obl_pph.f90
+++ b/obl_pph.f90
@@ -42,7 +42,7 @@ module obl_pph
         real :: Kh_b = 0.00001      !< background eddy diffusivity, [m**2 / s]
 
         real :: Km_unstable = 100.0 !< unstable eddy viscosity, [m**2 / s] *:
-        real :: Kh_unstable = 100.0 !< unstable eddy diffusivity, [m**2 / s], *: INMCM: 5.0 * 0.01
+        real :: Kh_unstable = 100.0 !< unstable eddy diffusivity, [m**2 / s], *:
 
         real :: kappa = 0.4         !< von Karman constant, [n/d]
         real :: PrT0 = 1.0          !< neutral Prandtl number, [n/d]
diff --git a/obl_pph_dyn.f90 b/obl_pph_dyn.f90
index 2c141a4794827529da87d1a421112da3acf6ba61..f97670f6e9532bb77e9cd39ff6ce026c5fd7f4e8 100644
--- a/obl_pph_dyn.f90
+++ b/obl_pph_dyn.f90
@@ -39,6 +39,9 @@ module obl_pph_dyn
         real :: Km_b = 0.0001       !< background eddy viscosity, [m**2 / s], *: INMCM: 5 * 10**(-6)  
         real :: Kh_b = 0.00001      !< background eddy diffusivity, [m**2 / s]
 
+        real :: Km_unstable = 100.0 !< unstable eddy viscosity, [m**2 / s] *:
+        real :: Kh_unstable = 100.0 !< unstable eddy diffusivity, [m**2 / s], *:
+
         real :: C_l = 4.0 / 9.0     !< length scale tuning constant, [n/d], *: = (4.0 / pi^2) in Obukhov length scale
         
         real :: kappa = 0.4         !< von Karman constant
@@ -150,7 +153,11 @@ module obl_pph_dyn
         Km_0 = param%C_l * U_dynH * param%kappa * mld / 2.0
 
         do k = 1, cz
-            Km(k) = Km_0 / (1.0 + param%alpha * Ri_grad(k))**(param%n) + param%Km_b
+            if (Ri_grad(k) >= 0.0) then
+                Km(k) = Km_0 / (1.0 + param%alpha * Ri_grad(k))**(param%n) + param%Km_b
+            else
+                Km(k) = param%Km_unstable
+            endif
         end do
     end subroutine
 
@@ -190,7 +197,11 @@ module obl_pph_dyn
         Kh_0 = param%C_l * U_dynH * param%kappa * mld / 2.0
 
         do k = 1, cz
-            Kh(k) = Kh_0 / (1.0 + param%alpha * Ri_grad(k))**(param%n + 1.0) + param%Kh_b
+            if (Ri_grad(k) >= 0.0) then
+                Kh(k) = Kh_0 / (1.0 + param%alpha * Ri_grad(k))**(param%n + 1.0) + param%Kh_b
+            else
+                Kh(k) = param%Kh_unstable
+            endif
         end do
     end subroutine
 
@@ -241,6 +252,22 @@ call c_config_is_varname(trim(tag)//".alpha"//C_NULL_CHAR, status)
                 return
             end if
         endif
+        call c_config_is_varname(trim(tag)//".Km_unstable"//C_NULL_CHAR, status)
+        if (status /= 0) then
+            call c_config_get_float(trim(tag)//".Km_unstable"//C_NULL_CHAR, param%Km_unstable, status)
+            if (status == 0) then
+                ierr = 1        ! signal ERROR
+                return
+            end if
+        endif
+        call c_config_is_varname(trim(tag)//".Kh_unstable"//C_NULL_CHAR, status)
+        if (status /= 0) then
+            call c_config_get_float(trim(tag)//".Kh_unstable"//C_NULL_CHAR, param%Kh_unstable, status)
+            if (status == 0) then
+                ierr = 1        ! signal ERROR
+                return
+            end if
+        endif
         call c_config_is_varname(trim(tag)//".C_l"//C_NULL_CHAR, status)
         if (status /= 0) then
             call c_config_get_float(trim(tag)//".C_l"//C_NULL_CHAR, param%C_l, status)