diff --git a/srcF/sfx_sheba_noniterative.f90 b/srcF/sfx_sheba_noniterative.f90
index cff8781a58dfe11b133384e6dfd22a0b5b3c6c9d..5c6462c5dc11fb032d2d4df9965576c6164e68b9 100644
--- a/srcF/sfx_sheba_noniterative.f90
+++ b/srcF/sfx_sheba_noniterative.f90
@@ -280,7 +280,12 @@ contains
         ! --- define relative height [thermal]
         h0_t = h / z0_t
       
-       
+        ! --- define Ri-bulk
+        Rib = (g / Tsemi) * h * (dT + 0.61e0 * Tsemi * dQ) / U**2
+         
+        ! --- define free convection transition zeta = z/L value 
+        call get_convection_lim(zeta_conv_lim, Rib_conv_lim, f_m_conv_lim, f_h_conv_lim, &
+                h0_m, h0_t, B)
         
         !  --- define snow consentration
         call get_sigma(sigma_r, sigma_w, rho_air, rho_s)
@@ -291,14 +296,9 @@ contains
                       
         deltaS=S_salt-S_mean
     
-         
-        ! --- define Ri-bulk
-        Rib = (g / Tsemi) * h * (dT + 0.61e0 * Tsemi * dQ) / U**2
         Ri_sn = (g * sigma_r * deltaS * h) / U**2
-        !write(*,*) 'ri', S_salt, h_salt, h, w_snow, u_dyn0
-        ! --- define free convection transition zeta = z/L value
-        call get_convection_lim(zeta_conv_lim, Rib_conv_lim, f_m_conv_lim, f_h_conv_lim, &
-                h0_m, h0_t, B)
+        
+        
 
         ! --- get the fluxes
         ! ----------------------------------------------------------------------------
@@ -309,9 +309,9 @@ contains
             !   --- restrict bulk Ri value
             !   *: note that this value is written to output
 !            Rib = min(Rib, Rib_max)
-           
+        do i = 1, maxiters   
         if (surface_type == surface_snow) then    
-            write(*,*) 'sfx_snow1', Ri_sn, Rib, U, deltaS
+            write(*,*) 'sfx_snow1', Ri_sn, Rib, U, deltaS, i
             !write(*,*) 'sfx_snow2', deltaS, u_dyn0, S_mean
             Rib=Rib+Ri_sn 
         endif
@@ -326,8 +326,17 @@ contains
 
             Udyn = kappa * U / (log(h / z0_m) - (psi_m - psi0_m))
             Tdyn = kappa * dT * Pr_t_0_inv / (log(h / z0_t) - (psi_h - psi0_h))
-
-        else if (Rib < Rib_conv_lim) then
+            
+            call get_h_salt(h_salt, Udyn)
+            call get_S_salt(S_salt, Udyn, u_thsnow, g, h_salt)
+            call get_S_mean(S_mean,  S_salt, h_salt, h, w_snow, Udyn)
+                      
+            deltaS=S_salt-S_mean
+    
+            Ri_sn = (g * sigma_r * deltaS * h) / U**2
+            
+            end do
+         else if (Rib < Rib_conv_lim) then
             ! --- strong instability block
 
             call get_psi_convection(psi_m, psi_h, zeta, Rib, &