diff --git a/src/DynamicModel.cc b/src/DynamicModel.cc
index f4bddc546cb1c50e2e9e0c583531450f2e8dd37f..da33a68b9f6df1e6df6e6d83849c9cb6003d84de 100644
--- a/src/DynamicModel.cc
+++ b/src/DynamicModel.cc
@@ -24,6 +24,7 @@
 #include <algorithm>
 #include <numeric>
 #include <regex>
+#include <sstream>
 
 #include "DynamicModel.hh"
 
@@ -4595,17 +4596,9 @@ DynamicModel::writeSetAuxiliaryVariables(const string &basename, bool julia) con
     return;
 
   string func_name = julia ? basename + "_dynamic_set_auxiliary_series" : "dynamic_set_auxiliary_series";
-  string filename = julia ? func_name + ".jl" : packageDir(basename) + "/" + func_name + ".m";
   string comment = julia ? "#" : "%";
 
-  ofstream output;
-  output.open(filename, ios::out | ios::binary);
-  if (!output.is_open())
-    {
-      cerr << "ERROR: Can't open file " << filename << " for writing" << endl;
-      exit(EXIT_FAILURE);
-    }
-
+  stringstream output;
   output << "function ds = " << func_name + "(ds, params)" << endl
          << comment << endl
          << comment << " Status : Computes Auxiliary variables of the dynamic model and returns a dseries" << endl
@@ -4614,7 +4607,7 @@ DynamicModel::writeSetAuxiliaryVariables(const string &basename, bool julia) con
          << comment << "           from model file (.mod)" << endl << endl
          << output_func_body.str();
 
-  output.close();
+  writeToFileIfModified(output, julia ? func_name + ".jl" : packageDir(basename) + "/" + func_name + ".m");
 }
 
 void
diff --git a/src/ModelEquationBlock.cc b/src/ModelEquationBlock.cc
index 96d09c644c2aa8682d6a8979f9f9076698f6e72d..69531800c1e3da41f6dbcb0c5fde4057c94602ff 100644
--- a/src/ModelEquationBlock.cc
+++ b/src/ModelEquationBlock.cc
@@ -19,6 +19,7 @@
 
 #include <cassert>
 #include <algorithm>
+#include <sstream>
 
 #include "ModelEquationBlock.hh"
 
@@ -190,17 +191,9 @@ SteadyStateModel::writeSteadyStateFile(const string &basename, bool ramsey_model
   if (def_table.size() == 0)
     return;
 
-  string filename = julia ? basename + "SteadyState2.jl" : packageDir(basename) + "/steadystate.m";
-  ofstream output;
-  output.open(filename, ios::out | ios::binary);
-  if (!output.is_open())
-    {
-      cerr << "ERROR: Can't open file " << filename << " for writing" << endl;
-      exit(EXIT_FAILURE);
-    }
-
   ExprNodeOutputType output_type = (julia ? ExprNodeOutputType::juliaSteadyStateFile : ExprNodeOutputType::steadyStateFile);
 
+  stringstream output;
   if (!julia)
     output << "function [ys_, params, info] = steadystate("
            << "ys_, exo_, params)" << endl
@@ -243,7 +236,8 @@ SteadyStateModel::writeSteadyStateFile(const string &basename, bool ramsey_model
   output << "end" << endl;
   if (julia)
     output << "end" << endl;
-  output.close();
+
+  writeToFileIfModified(output, julia ? basename + "SteadyState2.jl" : packageDir(basename) + "/steadystate.m");
 }
 
 void
diff --git a/src/StaticModel.cc b/src/StaticModel.cc
index a3ae89c59bb467b9c0790a859464083d0cba424f..eafb81f893ce75c4ff7eabe8b1320133b0babf46 100644
--- a/src/StaticModel.cc
+++ b/src/StaticModel.cc
@@ -22,6 +22,7 @@
 #include <cstdlib>
 #include <cassert>
 #include <algorithm>
+#include <sstream>
 
 #include "StaticModel.hh"
 #include "DynamicModel.hh"
@@ -2115,17 +2116,9 @@ StaticModel::writeSetAuxiliaryVariables(const string &basename, bool julia) cons
     return;
 
   string func_name = julia ? basename + "_set_auxiliary_variables" : "set_auxiliary_variables";
-  string filename = julia ? func_name + ".jl" : packageDir(basename) + "/" + func_name + ".m";
   string comment = julia ? "#" : "%";
 
-  ofstream output;
-  output.open(filename, ios::out | ios::binary);
-  if (!output.is_open())
-    {
-      cerr << "ERROR: Can't open file " << filename << " for writing" << endl;
-      exit(EXIT_FAILURE);
-    }
-
+  stringstream output;
   output << "function ";
   if (!julia)
     output << "y = ";
@@ -2142,7 +2135,7 @@ StaticModel::writeSetAuxiliaryVariables(const string &basename, bool julia) cons
   if (julia)
     output << "end" << endl;
 
-  output.close();
+  writeToFileIfModified(output, julia ? func_name + ".jl" : packageDir(basename) + "/" + func_name + ".m");
 }
 
 void