diff --git a/src/ModFile.cc b/src/ModFile.cc
index 6f37725800d094d19fe24d47b6d6cd18b1da4476..644c7ae3959f5cce084403aeb641a88137b1b45e 100644
--- a/src/ModFile.cc
+++ b/src/ModFile.cc
@@ -1315,9 +1315,16 @@ ModFile::writeJsonOutputParsingCheck(const string &basename, JsonFileOutputType
   output << ", ";
   dynamic_model.writeJsonOutput(output);
 
-  if (!statements.empty())
+  if (!statements.empty()
+      || !trend_component_model_table.empty())
     {
       output << ", \"statements\": [";
+      if (!trend_component_model_table.empty())
+        {
+          trend_component_model_table.writeJsonOutput(output);
+          output << ", ";
+        }
+
       for (auto it = statements.begin();
            it != statements.end(); it++)
         {
diff --git a/src/ParsingDriver.cc b/src/ParsingDriver.cc
index 5265aa822fb3b8085d14e151a2b2a7aa44c348d1..a86b37ff39a4fdbe605cbec2f67cb3b86f89dd0e 100644
--- a/src/ParsingDriver.cc
+++ b/src/ParsingDriver.cc
@@ -1422,22 +1422,20 @@ ParsingDriver::stoch_simul()
 void
 ParsingDriver::trend_component_model()
 {
- OptionsList::string_options_t::const_iterator it =
-   options_list.string_options.find("trend_component.name");
-  if (it == options_list.string_options.end())
+  const auto its = options_list.string_options.find("trend_component.name");
+  if (its == options_list.string_options.end())
     error("You must pass the model_name option to the trend_component_model statement.");
-  auto name = it->second;
+  auto name = its->second;
 
-  OptionsList::vec_str_options_t::const_iterator it1 =
-    options_list.vector_str_options.find("trend_component.eqtags");
-  if (it1 == options_list.vector_str_options.end())
+  const auto itvs = options_list.vector_str_options.find("trend_component.eqtags");
+  if (itvs == options_list.vector_str_options.end())
     error("You must pass the eqtags option to the trend_component_model statement.");
-  auto eqtags = it1->second;
+  auto eqtags = itvs->second;
 
-  it1 = options_list.vector_str_options.find("trend_component.trends");
-  if (it1 == options_list.vector_str_options.end())
+  const auto itvs1 = options_list.vector_str_options.find("trend_component.trends");
+  if (itvs1 == options_list.vector_str_options.end())
     error("You must pass the trends option to the trend_component_model statement.");
-  auto trends = it1->second;
+  auto trends = itvs1->second;
 
   mod_file->trend_component_model_table.addTrendComponentModel(name, eqtags, trends);
   options_list.clear();
diff --git a/src/SubModel.cc b/src/SubModel.cc
index 17702a2df1e4e403096a61bb20dfb60811a9c677..0e3997960f0dd8e1ee96e96083ace2ce68133f37 100644
--- a/src/SubModel.cc
+++ b/src/SubModel.cc
@@ -283,6 +283,21 @@ TrendComponentModelTable::writeJsonOutput(ostream &output) const
       if (name != *(names.begin()))
         output << ", ";
       output << "{\"statementName\": \"trend_component_model\","
-             << "\"model_name\": \"" << name << "\"}";
+             << "\"model_name\": \"" << name << "\","
+             << "\"eqtags\": [";
+      for (const auto &it : eqtags.at(name))
+        {
+          output << "\"" << it << "\"";
+          if (&it != &eqtags.at(name).back())
+            output << ", ";
+        }
+      output << "], \"trend_eqtags\": [";
+      for (const auto &it : trend_eqtags.at(name))
+        {
+          output << "\"" << it << "\"";
+          if (&it != &trend_eqtags.at(name).back())
+            output << ", ";
+        }
+      output << "]}";
     }
 }
diff --git a/src/SubModel.hh b/src/SubModel.hh
index e7fa27590f6337cba89e4f663cc18fc5817f0745..d03ad0fd41fc4122cb18ece3c301e3086a49bf0b 100644
--- a/src/SubModel.hh
+++ b/src/SubModel.hh
@@ -48,9 +48,11 @@ public:
   TrendComponentModelTable(SymbolTable &symbol_table_arg);
 
   //! Add a trend component model
-  void addTrendComponentModel(string name, vector<string> eqtags, vector<string> trend_eqtags);
+  void addTrendComponentModel(string name_arg, vector<string> eqtags_arg,
+                              vector<string> trend_eqtags_arg);
 
   inline bool isExistingTrendComponentModelName(const string &name_arg) const;
+  inline bool empty() const;
 
   map<string, vector<string>> getEqTags() const;
   vector<string> getEqTags(const string &name_arg) const;
@@ -93,4 +95,10 @@ TrendComponentModelTable::isExistingTrendComponentModelName(const string &name_a
   return names.find(name_arg) == names.end() ? false : true;
 }
 
+inline bool
+TrendComponentModelTable::empty() const
+{
+  return names.empty();
+}
+
 #endif