diff --git a/modcc/parser.cpp b/modcc/parser.cpp
index 75bf1a5750beb5609ca6129f19814dcec9788b1d..965e4946e38a977d25b31ce08eb82b21b2c4fc15 100644
--- a/modcc/parser.cpp
+++ b/modcc/parser.cpp
@@ -1008,6 +1008,8 @@ expression_ptr Parser::parse_statement() {
         return parse_solve();
     case tok::local:
         return parse_local();
+    case tok::watch:
+        return parse_watch();
     case tok::identifier:
         return parse_line_expression();
     case tok::conserve:
@@ -1399,6 +1401,7 @@ expression_ptr Parser::parse_unaryop() {
 /// expects one of :
 ///  ::  number
 ///  ::  identifier
+///  ::  watch
 ///  ::  call
 ///  ::  parenthesis expression (parsed recursively)
 ///  ::  prefix binary operators
@@ -1656,6 +1659,19 @@ conductance_statement_error:
     return nullptr;
 }
 
+// WATCH (cond) flag
+expression_ptr Parser::parse_watch() {
+    Location loc = location_; // solve location for expression
+    get_token();              // consume keyword
+
+    parse_parenthesis_expression();
+    parse_expression();
+
+    error("WATCH statements are not supported in modcc.", loc);
+    return nullptr;
+}
+
+
 expression_ptr Parser::parse_if() {
     Token if_token = token_;
     get_token(); // consume 'if'
diff --git a/modcc/parser.hpp b/modcc/parser.hpp
index 84e56316c0acb4dc001c6bf42756912e38d60092..bf82af8d9646cf081370972ab213988193b62518 100644
--- a/modcc/parser.hpp
+++ b/modcc/parser.hpp
@@ -36,6 +36,7 @@ public:
     expression_ptr parse_local();
     expression_ptr parse_solve();
     expression_ptr parse_conductance();
+    expression_ptr parse_watch();
     expression_ptr parse_block(bool);
     expression_ptr parse_initial();
     expression_ptr parse_compartment_statement();
diff --git a/modcc/token.cpp b/modcc/token.cpp
index 7ba2f71b9ba508c55e9e5b5dc73416e1d22e5227..db338d169ec118c7a9a01bb864d0b8ed5fec8c73 100644
--- a/modcc/token.cpp
+++ b/modcc/token.cpp
@@ -74,6 +74,7 @@ static Keyword keywords[] = {
     {"exprelr",     tok::exprelr},
     {"safeinv",     tok::safeinv},
     {"CONDUCTANCE", tok::conductance},
+    {"WATCH",       tok::watch},
     {nullptr,       tok::reserved},
 };
 
@@ -152,6 +153,7 @@ static TokenString token_strings[] = {
     {"sin",         tok::sin},
     {"cnexp",       tok::cnexp},
     {"CONDUCTANCE", tok::conductance},
+    {"WATCH",       tok::watch},
     {"error",       tok::reserved},
 };
 
diff --git a/modcc/token.hpp b/modcc/token.hpp
index 0e09c385b3b323d4e3d2df6c9de225dd5621ea98..a953ae2e56a96b98ed22e35ec78fa848b33560f2 100644
--- a/modcc/token.hpp
+++ b/modcc/token.hpp
@@ -83,6 +83,9 @@ enum class tok {
 
     conductance,
 
+    // trap unsupported keywords
+    watch,
+
     reserved, // placeholder for generating keyword lookup
 };
 
diff --git a/test/unit-modcc/test_parser.cpp b/test/unit-modcc/test_parser.cpp
index 5916704cea23a602699877473a2aecdafc2fba05..18d3e19c1864efb9e538ff26b17aaa3896ac36d5 100644
--- a/test/unit-modcc/test_parser.cpp
+++ b/test/unit-modcc/test_parser.cpp
@@ -279,6 +279,10 @@ TEST(Parser, parse_conductance) {
     }
 }
 
+TEST(Parser, parse_watch) {
+    EXPECT_TRUE(check_parse_fail(&Parser::parse_watch, "WATCH( 0 < 1) 42"));
+}
+
 TEST(Parser, parse_if) {
     std::unique_ptr<IfExpression> s;