diff --git a/src/DynamicModel.cc b/src/DynamicModel.cc
index 4defadc9587aa223e4c3839b5cc9aa215933a547..816527a26cd9628d9ca2a67b8644d459a0d5c03a 100644
--- a/src/DynamicModel.cc
+++ b/src/DynamicModel.cc
@@ -3547,7 +3547,7 @@ DynamicModel::writeSetAuxiliaryVariables(const string &basename, bool julia) con
     output << "end" << endl;
 
   if (julia)
-    writeToFileIfModified(output, basename + "DynamicSetAuxiliarySeries.jl");
+    writeToFileIfModified(output, filesystem::path{basename} / "model" / "julia" / "DynamicSetAuxiliarySeries.jl");
   else
     {
       /* Calling writeToFileIfModified() is useless here since we write inside
diff --git a/src/DynamicModel.hh b/src/DynamicModel.hh
index 5f1bb1ebb1b4fb00e691c647d8c41c2a63acd547..0a961d1023b17affe292c35b8ca8b0c13df827df 100644
--- a/src/DynamicModel.hh
+++ b/src/DynamicModel.hh
@@ -866,7 +866,7 @@ DynamicModel::writeParamsDerivativesFile(const string &basename) const
   auto [tt_output, rp_output, gp_output, rpp_output, gpp_output, hp_output, g3p_output]
     { writeParamsDerivativesFileHelper<output_type>() };
 
-  const filesystem::path filename {julia ? filesystem::path{basename + "DynamicParamsDerivs.jl"} : packageDir(basename) / "dynamic_params_derivs.m"};
+  const filesystem::path filename {julia ? filesystem::path{basename} / "model" / "julia" / "DynamicParamsDerivs.jl" : packageDir(basename) / "dynamic_params_derivs.m"};
   ofstream paramsDerivsFile { filename, ios::out | ios::binary };
   if (!paramsDerivsFile.is_open())
     {
diff --git a/src/ModelEquationBlock.cc b/src/ModelEquationBlock.cc
index d07fa0d0add82bfdc6168a750741f4ab2c512b9e..745fb6da0f8bcd028c87d97bf469748bca06284b 100644
--- a/src/ModelEquationBlock.cc
+++ b/src/ModelEquationBlock.cc
@@ -260,7 +260,7 @@ SteadyStateModel::writeSteadyStateFile(const string &basename, bool julia) const
     output << "end" << endl << "end" << endl;
 
   if (julia)
-    writeToFileIfModified(output, basename + "SteadyState2.jl");
+    writeToFileIfModified(output, filesystem::path{basename} / "model" / "julia" / "SteadyState2.jl");
   else
     {
       /* Calling writeToFileIfModified() is useless here since we write inside
diff --git a/src/StaticModel.cc b/src/StaticModel.cc
index 0302d78f6b9c5050fc7dfffeca7abf85e60655ca..a8576c8e0359dd74928c6172e07a6d1897ddcbc6 100644
--- a/src/StaticModel.cc
+++ b/src/StaticModel.cc
@@ -1206,7 +1206,7 @@ StaticModel::writeSetAuxiliaryVariables(const string &basename, bool julia) cons
     output << "end" << endl;
 
   if (julia)
-    writeToFileIfModified(output, basename + "SetAuxiliaryVariables.jl");
+    writeToFileIfModified(output, filesystem::path{basename} / "model" / "julia" / "SetAuxiliaryVariables.jl");
   else
     {
       /* Calling writeToFileIfModified() is useless here since we write inside
diff --git a/src/StaticModel.hh b/src/StaticModel.hh
index 541736e62a6dcfc82489257fd0f6b0c7d67fbb39..5ae9fdc1fde46c57794bae0f6a6fbf647edc3782 100644
--- a/src/StaticModel.hh
+++ b/src/StaticModel.hh
@@ -225,7 +225,7 @@ StaticModel::writeParamsDerivativesFile(const string &basename) const
     { writeParamsDerivativesFileHelper<output_type>() };
   // g3p_output is ignored
 
-  filesystem::path filename {julia ? filesystem::path{basename + "StaticParamsDerivs.jl"} : packageDir(basename) / "static_params_derivs.m"};
+  filesystem::path filename {julia ? filesystem::path{basename} / "model" / "julia" / "StaticParamsDerivs.jl" : packageDir(basename) / "static_params_derivs.m"};
   ofstream paramsDerivsFile { filename, ios::out | ios::binary };
   if (!paramsDerivsFile.is_open())
     {