Index: src/Parser/StatementNode.cc
===================================================================
--- src/Parser/StatementNode.cc	(revision 201aeb9b7c42eb7c7aa8bc065247bffda4932b33)
+++ src/Parser/StatementNode.cc	(revision e2b17a4439069fc5076a980015bdd7f368faf252)
@@ -234,5 +234,5 @@
 		target,
 		maybeMoveBuild<Statement >( stmt ),
-		maybeMoveBuild<Expression>( when )
+		notZeroExpr( maybeMoveBuild<Expression>( when ) )
 	});
 
@@ -250,8 +250,8 @@
 	delete targetExpr;
 
-	node->clauses.push_back( WaitForStmt::Clause{
+	node->clauses.insert( node->clauses.begin(), WaitForStmt::Clause{
 		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 ) {
Index: src/Parser/parserutility.cc
===================================================================
--- src/Parser/parserutility.cc	(revision 201aeb9b7c42eb7c7aa8bc065247bffda4932b33)
+++ src/Parser/parserutility.cc	(revision e2b17a4439069fc5076a980015bdd7f368faf252)
@@ -29,4 +29,5 @@
 
 Expression *notZeroExpr( Expression *orig ) {
+	if( !orig ) return nullptr;
 	UntypedExpr *comparison = new UntypedExpr( new NameExpr( "?!=?" ) );
 	comparison->get_args().push_back( orig );
