Index: src/Parser/StatementNode.cc
===================================================================
--- src/Parser/StatementNode.cc	(revision 681c764e5af78bfc1348f5eefaf277c0ab5c92e4)
+++ src/Parser/StatementNode.cc	(revision a01f7c948d2b19b02ecf6d5dce78749a646f341a)
@@ -99,7 +99,19 @@
 	} // if
 
-	Expression * cond = ctl->condition ? maybeMoveBuild< Expression >(ctl->condition) : new VariableExpr( dynamic_cast<DeclarationWithType *>( dynamic_cast<DeclStmt *>( init.back() )->decl ) );
+	Expression * cond = nullptr;
+	if ( ctl->condition ) {
+		// compare the provided condition against 0
+		cond =  notZeroExpr( maybeMoveBuild< Expression >(ctl->condition) );
+	} else {
+		for ( Statement * stmt : init ) {
+			// build the && of all of the declared variables compared against 0
+			DeclStmt * declStmt = safe_dynamic_cast< DeclStmt * >( stmt );
+			DeclarationWithType * dwt = safe_dynamic_cast< DeclarationWithType * >( declStmt->decl );
+			Expression * nze = notZeroExpr( new VariableExpr( dwt ) );
+			cond = cond ? new LogicalExpr( cond, nze, true ) : nze;
+		}
+	}
 	delete ctl;
-	return new IfStmt( noLabels, notZeroExpr( cond ), thenb, elseb, init );
+	return new IfStmt( noLabels, cond, thenb, elseb, init );
 }
 
Index: src/tests/.expect/ifcond.txt
===================================================================
--- src/tests/.expect/ifcond.txt	(revision 681c764e5af78bfc1348f5eefaf277c0ab5c92e4)
+++ src/tests/.expect/ifcond.txt	(revision a01f7c948d2b19b02ecf6d5dce78749a646f341a)
@@ -1,3 +1,3 @@
 x != 0 correct
-x != 0 && y == 0 incorrect
+x != 0 && y != 0 correct
 x == y correct
Index: src/tests/ifcond.c
===================================================================
--- src/tests/ifcond.c	(revision 681c764e5af78bfc1348f5eefaf277c0ab5c92e4)
+++ src/tests/ifcond.c	(revision a01f7c948d2b19b02ecf6d5dce78749a646f341a)
@@ -1,18 +1,18 @@
-// 
+//
 // Cforall Version 1.0.0 Copyright (C) 2017 University of Waterloo
 //
 // The contents of this file are covered under the licence agreement in the
 // file "LICENCE" distributed with Cforall.
-// 
-// ifcond.c -- 
-// 
+//
+// ifcond.c --
+//
 // Author           : Peter A. Buhr
 // Created On       : Sat Aug 26 10:13:11 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Aug 30 07:55:24 2017
-// Update Count     : 13
-// 
+// Last Modified By : Rob Schluntz
+// Last Modified On : Fri Sep 01 15:22:19 2017
+// Update Count     : 14
+//
 
-#include<fstream>
+#include <fstream>
 
 int f( int r ) { return r; }
@@ -27,8 +27,10 @@
 	} // if
 
-	if ( int x = 4, y = 0 ) {							// FIXME && distribution
+	if ( int x = 4, y = 0 ) {
+		sout | "x != 0 && y != 0 incorrect" | endl;
+	} else if ( int x = 4, y = 1 ) {
 		sout | "x != 0 && y != 0 correct" | endl;
-    } else {
-		sout | "x != 0 && y == 0 incorrect" | endl;
+	} else {
+		sout | "x == 0 || y == 0 incorrect" | endl;
 	} // if
 
