diff --git a/src/ComputingTasks.cc b/src/ComputingTasks.cc
index ec26f9b70f36934916dd6f6b96f28e3a337e37ce..e05e9fa2bc6e5b383cdf9993184ce88f5ee8ece8 100644
--- a/src/ComputingTasks.cc
+++ b/src/ComputingTasks.cc
@@ -920,11 +920,9 @@ EstimationStatement::checkPass(ModFileStructure& mod_file_struct, WarningConsoli
   /* Check that we are not trying to estimate a parameter appearing in the
      planner discount factor (see dynare#1173) */
   vector<int> estimated_params_in_planner_discount;
-  set_intersection(mod_file_struct.estimated_parameters.begin(),
-                   mod_file_struct.estimated_parameters.end(),
-                   mod_file_struct.parameters_in_planner_discount.begin(),
-                   mod_file_struct.parameters_in_planner_discount.end(),
-                   back_inserter(estimated_params_in_planner_discount));
+  ranges::set_intersection(mod_file_struct.estimated_parameters,
+                           mod_file_struct.parameters_in_planner_discount,
+                           back_inserter(estimated_params_in_planner_discount));
   if (!estimated_params_in_planner_discount.empty())
     {
       cerr << "ERROR: It is not possible to estimate a parameter ("
@@ -1183,8 +1181,7 @@ AbstractEstimatedParamsStatement::commonCheckPass() const
       it.p4->collectVariables(SymbolType::parameter, used_params);
       it.jscale->collectVariables(SymbolType::parameter, used_params);
       vector<int> intersect;
-      set_intersection(declared_params.begin(), declared_params.end(), used_params.begin(),
-                       used_params.end(), back_inserter(intersect));
+      ranges::set_intersection(declared_params, used_params, back_inserter(intersect));
       if (!intersect.empty())
         {
           cerr << "ERROR: in `" << blockName() << "' block, the value of estimated parameter "
diff --git a/src/DynamicModel.cc b/src/DynamicModel.cc
index 1fd6d5f13f75d158917878acc6444b0a22af13a7..3cd9a0e38dd4c847b0a486b855063df03888d9d0 100644
--- a/src/DynamicModel.cc
+++ b/src/DynamicModel.cc
@@ -3715,8 +3715,7 @@ DynamicModel::checkNoWithLogTransform(const set<int>& eqnumbers)
   const set<int>& with_log_transform = symbol_table.getVariablesWithLogTransform();
 
   vector<int> intersect;
-  set_intersection(endos.begin(), endos.end(), with_log_transform.begin(), with_log_transform.end(),
-                   back_inserter(intersect));
+  ranges::set_intersection(endos, with_log_transform, back_inserter(intersect));
   if (!intersect.empty())
     {
       cerr << "ERROR: the following variables are declared with var(log) and therefore cannot "
diff --git a/src/ModFile.cc b/src/ModFile.cc
index 3c01dbd113ccea6309cd44ca978a2fe6c13a9948..fcc654cb3acf96e91dbc9586a1851e86f0b9c028 100644
--- a/src/ModFile.cc
+++ b/src/ModFile.cc
@@ -355,11 +355,9 @@ ModFile::checkPass(bool nostrict, bool stochastic)
   // Test if some estimated parameters are used within the values of shocks
   // statements (see issue #469)
   set<int> parameters_intersect;
-  set_intersection(mod_file_struct.parameters_within_shocks_values.begin(),
-                   mod_file_struct.parameters_within_shocks_values.end(),
-                   mod_file_struct.estimated_parameters.begin(),
-                   mod_file_struct.estimated_parameters.end(),
-                   inserter(parameters_intersect, parameters_intersect.begin()));
+  ranges::set_intersection(mod_file_struct.parameters_within_shocks_values,
+                           mod_file_struct.estimated_parameters,
+                           inserter(parameters_intersect, parameters_intersect.begin()));
   if (parameters_intersect.size() > 0)
     {
       cerr << "ERROR: some estimated parameters (";