diff --git a/DynamicModel.cc b/DynamicModel.cc
index e2d28f79fd3a6159d31566a08f86800e9fca8dfb..5abfc057088cc66438e23ae369938435e90a312d 100644
--- a/DynamicModel.cc
+++ b/DynamicModel.cc
@@ -3816,7 +3816,7 @@ DynamicModel::cloneDynamic(DynamicModel &dynamic_model) const
       vector<pair<string, string> > eq_tags;
       for (vector<pair<int, pair<string, string> > >::const_iterator it = equation_tags.begin();
            it != equation_tags.end(); ++it)
-        if (it->first == i)
+        if (it->first == (int)i)
           eq_tags.push_back(it->second);
       dynamic_model.addEquation(equations[i]->cloneDynamic(dynamic_model), equations_lineno[i], eq_tags);
     }
diff --git a/ModFile.cc b/ModFile.cc
index 304e4df16562a83729f9bf46bb70efa54cfe94e6..a38949a0fb5a553bfdf4203400cbda2556e3d52d 100644
--- a/ModFile.cc
+++ b/ModFile.cc
@@ -1298,7 +1298,7 @@ ModFile::writeJsonOutput(const string &basename, JsonOutputPointType json, JsonF
   if (json == parsing || json == checkpass)
     symbol_table.freeze();
 
-  writeJsonOutputParsingCheck(basename, json_output_mode);
+  writeJsonOutputParsingCheck(basename, json_output_mode, json == transformpass);
 
   if (json == parsing || json == checkpass)
     symbol_table.unfreeze();
@@ -1330,7 +1330,7 @@ ModFile::writeJsonOutput(const string &basename, JsonOutputPointType json, JsonF
 }
 
 void
-ModFile::writeJsonOutputParsingCheck(const string &basename, JsonFileOutputType json_output_mode) const
+ModFile::writeJsonOutputParsingCheck(const string &basename, JsonFileOutputType json_output_mode, bool transformpass) const
 {
   ostringstream output;
   output << "{" << endl;
@@ -1353,8 +1353,21 @@ ModFile::writeJsonOutputParsingCheck(const string &basename, JsonFileOutputType
     }
   output << "}" << endl;
 
+  ostringstream original_model_output;
+  original_model_output << "";
+  if (transformpass)
+    {
+      original_model_output << "{";
+      original_model.writeJsonOriginalModelOutput(original_model_output);
+      original_model_output << "}" << endl;
+    }
+
   if (json_output_mode == standardout)
-    cout << output.str();
+    {
+      cout << output.str();
+      if (!original_model_output.str().empty())
+        cout << original_model_output.str();
+    }
   else
     {
       ofstream jsonOutputFile;
@@ -1378,6 +1391,29 @@ ModFile::writeJsonOutputParsingCheck(const string &basename, JsonFileOutputType
 
       jsonOutputFile << output.str();
       jsonOutputFile.close();
+
+      if (!original_model_output.str().empty())
+        {
+          if (basename.size())
+            {
+              string fname(basename);
+              fname += "_original.json";
+              jsonOutputFile.open(fname.c_str(), ios::out | ios::binary);
+              if (!jsonOutputFile.is_open())
+                {
+                  cerr << "ERROR: Can't open file " << fname << " for writing" << endl;
+                  exit(EXIT_FAILURE);
+                }
+            }
+          else
+            {
+              cerr << "ERROR: Missing file name" << endl;
+              exit(EXIT_FAILURE);
+            }
+
+          jsonOutputFile << original_model_output.str();
+          jsonOutputFile.close();
+        }
     }
 }
 
diff --git a/ModFile.hh b/ModFile.hh
index d8bb587cbf052c2dad8149a66b0b9f14f46c39b8..1b763f636c87192a0fcbf3e09f2641c8ee6a2042 100644
--- a/ModFile.hh
+++ b/ModFile.hh
@@ -118,7 +118,7 @@ private:
   //! Warnings Encountered
   WarningConsolidation &warnings;
   //! Functions used in writing of JSON outut. See writeJsonOutput
-  void writeJsonOutputParsingCheck(const string &basename, JsonFileOutputType json_output_mode) const;
+  void writeJsonOutputParsingCheck(const string &basename, JsonFileOutputType json_output_mode, bool transformpass) const;
   void writeJsonComputingPassOutput(const string &basename, JsonFileOutputType json_output_mode, bool jsonprintderivdetail) const;
   void writeJsonFileHelper(string &fname, ostringstream &output) const;
 public: