diff --git a/src/DynamicModel.cc b/src/DynamicModel.cc
index 52b62373633ab07a0f1c089ded8860ebe7e605cc..2acd9d1160688514804afcc4a358fc49abc44c9c 100644
--- a/src/DynamicModel.cc
+++ b/src/DynamicModel.cc
@@ -5526,6 +5526,24 @@ DynamicModel::writeParamsDerivativesFile(const string &basename, bool julia) con
       third_derivs1_output << ";" << endl;
 
       i++;
+
+      if (var1 != var2)
+        {
+          // Treat symmetric elements
+          third_derivs1_output << "hp" << LEFT_ARRAY_SUBSCRIPT(output_type) << i << ",1"
+                               << RIGHT_ARRAY_SUBSCRIPT(output_type) << "=" << eq+1 << ";" << endl
+                               << "hp" << LEFT_ARRAY_SUBSCRIPT(output_type) << i << ",2"
+                               << RIGHT_ARRAY_SUBSCRIPT(output_type) << "=" << var2_col << ";" << endl
+                               << "hp" << LEFT_ARRAY_SUBSCRIPT(output_type) << i << ",3"
+                               << RIGHT_ARRAY_SUBSCRIPT(output_type) << "=" << var1_col << ";" << endl
+                               << "hp" << LEFT_ARRAY_SUBSCRIPT(output_type) << i << ",4"
+                               << RIGHT_ARRAY_SUBSCRIPT(output_type) << "=" << param_col << ";" << endl
+                               << "hp" << LEFT_ARRAY_SUBSCRIPT(output_type) << i << ",5"
+                               << RIGHT_ARRAY_SUBSCRIPT(output_type)
+                               << "=hp" << LEFT_ARRAY_SUBSCRIPT(output_type) << i-1 << ",5"
+                               << RIGHT_ARRAY_SUBSCRIPT(output_type) << ";" << endl;
+          i++;
+        }
     }
 
   string filename = julia ? basename + "DynamicParamsDerivs.jl" : packageDir(basename) + "/dynamic_params_derivs.m";
diff --git a/src/StaticModel.cc b/src/StaticModel.cc
index b2d9641af61a832e9cd16a18a83772c4a6f04aa4..584aad0547a6bbe7f111654601fb3d69e3bf8224 100644
--- a/src/StaticModel.cc
+++ b/src/StaticModel.cc
@@ -2798,6 +2798,24 @@ StaticModel::writeParamsDerivativesFile(const string &basename, bool julia) cons
       third_derivs1_output << ";" << endl;
 
       i++;
+
+      if (var1 != var2)
+        {
+          // Treat symmetric elements
+          third_derivs1_output << "hp" << LEFT_ARRAY_SUBSCRIPT(output_type) << i << ",1"
+                               << RIGHT_ARRAY_SUBSCRIPT(output_type) << "=" << eq+1 << ";" << endl
+                               << "hp" << LEFT_ARRAY_SUBSCRIPT(output_type) << i << ",2"
+                               << RIGHT_ARRAY_SUBSCRIPT(output_type) << "=" << var2_col << ";" << endl
+                               << "hp" << LEFT_ARRAY_SUBSCRIPT(output_type) << i << ",3"
+                               << RIGHT_ARRAY_SUBSCRIPT(output_type) << "=" << var1_col << ";" << endl
+                               << "hp" << LEFT_ARRAY_SUBSCRIPT(output_type) << i << ",4"
+                               << RIGHT_ARRAY_SUBSCRIPT(output_type) << "=" << param_col << ";" << endl
+                               << "hp" << LEFT_ARRAY_SUBSCRIPT(output_type) << i << ",5"
+                               << RIGHT_ARRAY_SUBSCRIPT(output_type)
+                               << "=hp" << LEFT_ARRAY_SUBSCRIPT(output_type) << i-1 << ",5"
+                               << RIGHT_ARRAY_SUBSCRIPT(output_type) << ";" << endl;
+          i++;
+        }
     }
 
   ofstream paramsDerivsFile;