anchor.diff:          ! Recompute variables when the system is stable
           call compute_variables(s)
           call timestep (s, dt_T, dt_nu)
  -        call distance(s, dist, temperature_c, sigma_c)
  -        min_dt_T = minval(dt_T)
  -        min_dt_nu = minval(dt_nu)         
  -        ! Condition to slow dt
           dist_crit = 1. !FIXME
  -       ! if (maxval(dist) <= maxval(dist_crit)) then !FIXME
  -       !   dt_T  = dist / dist_crit * dt_nu
  -       !   dt_nu = dist / dist_crit * dt_T
  -       ! endif
  +        dt_pre_factor = pre_factor(s, S_c, dist_crit)
  +        min_dt_T = minval(dt_T) * dt_pre_factor
  +        min_dt_nu = minval(dt_nu) * dt_pre_factor         
  + 
  +
        end if
   
        !----------------------------------------------
  
positive.code: 
    real(kind = x_precision), dimension(n_cell) :: temperature_c
    real(kind = x_precision), dimension(n_cell) :: sigma_c
    !-------------------------------------------------------------------------
  
    integer                                     :: iteration, ios, i
  
negative.code:   logical                                     :: T_converged
    real (kind = x_precision), dimension(n_cell):: dist
  
    real (kind = x_precision), dimension(n_cell):: dist_crit
    real (kind = x_precision)                   :: dt_pre_factor
  
    ! FIXME
    S_crit = 1.e99_x_precision
  