anchor.diff:    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
  
positive.code:         ! 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
       end if
  
       !----------------------------------------------
  
negative.code: 
    real(kind = x_precision), dimension(n_cell) :: temperature_c
    real(kind = x_precision), dimension(n_cell) :: sigma_c
    real(kind = x_precision), dimension(n_cell) :: S_c 
    !-------------------------------------------------------------------------
  
    integer                                     :: iteration, ios, i
  