Index: src/Parser/StatementNode.cc
===================================================================
--- src/Parser/StatementNode.cc	(revision ba54f7dba922f0df27eebfcc9c67f07969df7db4)
+++ src/Parser/StatementNode.cc	(revision 1dcd955480c332b81ce157f2b7ccf8e34ad2acd3)
@@ -234,5 +234,5 @@
 		target,
 		maybeMoveBuild<Statement >( stmt ),
-		maybeMoveBuild<Expression>( when )
+		notZeroExpr( maybeMoveBuild<Expression>( when ) )
 	});
 
@@ -253,5 +253,5 @@
 		std::move( target ),
 		maybeMoveBuild<Statement >( stmt ),
-		maybeMoveBuild<Expression>( when )
+		notZeroExpr( maybeMoveBuild<Expression>( when ) )
 	});
 
@@ -265,9 +265,9 @@
 		node->timeout.time      = maybeMoveBuild<Expression>( timeout );
 		node->timeout.statement = maybeMoveBuild<Statement >( stmt    );
-		node->timeout.condition = maybeMoveBuild<Expression>( when    );
+		node->timeout.condition = notZeroExpr( maybeMoveBuild<Expression>( when ) );
 	}
 	else {
-		node->orelse.statement  = maybeMoveBuild<Statement >( stmt    );
-		node->orelse.condition  = maybeMoveBuild<Expression>( when    );
+		node->orelse.statement  = maybeMoveBuild<Statement >( stmt );
+		node->orelse.condition  = notZeroExpr( maybeMoveBuild<Expression>( when ) );
 	}
 
@@ -280,17 +280,11 @@
 	node->timeout.time      = maybeMoveBuild<Expression>( timeout );
 	node->timeout.statement = maybeMoveBuild<Statement >( stmt    );
-	node->timeout.condition = maybeMoveBuild<Expression>( when    );
+	node->timeout.condition = notZeroExpr( maybeMoveBuild<Expression>( when ) );
 
 	node->orelse.statement = maybeMoveBuild<Statement >( else_stmt );
-	node->orelse.condition = maybeMoveBuild<Expression>( else_when );
+	node->orelse.condition  = notZeroExpr( maybeMoveBuild<Expression>( else_when ) );
 
 	return node;
 }
-
-// WaitForStmt::Target build_waitfor( const std::string * name, ExpressionNode * arguments ) {
-// 	 return WaitForStmt::Clause{
-
-// 	 };
-// }
 
 Statement *build_compound( StatementNode *first ) {
