diff --git a/src/DynamicModel.cc b/src/DynamicModel.cc
index 459810deb02f3d557329ff4a8e873536a137c473..e6cfa82d8821dcf922212257a6d536eca2063cdc 100644
--- a/src/DynamicModel.cc
+++ b/src/DynamicModel.cc
@@ -2137,10 +2137,13 @@ DynamicModel::computingPass(int derivsOrder, int paramsDerivsOrder, const eval_c
   if (paramsDerivsOrder > 0 && !no_tmp_terms)
     computeParamsDerivativesTemporaryTerms();
 
+  /* Change block decomposition settings when the “block” keyword has not been
+     used and the model is purely backward/forward or static. This is meant to
+     be used with solve_algo={12,14}. */
   if (!block && (max_endo_lag == 0 || max_endo_lead == 0))
     {
       time_recursive_block_decomposition = true;
-      mfs = 3; // FIXME: remove this line when mfs=3 becomes the global default
+      mfs = 3; // Typically useful for equations of the form log(x)=RHS
     }
   computingPassBlock(eval_context, no_tmp_terms);
   if (block_decomposed)
diff --git a/src/ModelTree.hh b/src/ModelTree.hh
index f7f3394b3c4b2f83d9ec61cfb5d45278ae69a9a2..551ab744749f949606735d29761c20a8ab382336 100644
--- a/src/ModelTree.hh
+++ b/src/ModelTree.hh
@@ -599,7 +599,7 @@ public:
   //! Absolute value under which a number is considered to be zero
   double cutoff{1e-15};
   // Setting for minimum feedback set computation (see the reference manual)
-  int mfs{0};
+  int mfs{1};
   //! Declare a node as an equation of the model; also give its line number
   void addEquation(expr_t eq, optional<int> lineno);
   //! Declare a node as an equation of the model, also giving its tags