Index: src/ResolvExpr/CandidateFinder.cpp
===================================================================
--- src/ResolvExpr/CandidateFinder.cpp	(revision 59c8dff49bbb5284b39ab27da894a644327a531a)
+++ src/ResolvExpr/CandidateFinder.cpp	(revision 63e129c511e47a21c12bf1eae24b6af9aa92433a)
@@ -46,4 +46,5 @@
 #include "AST/Type.hpp"
 #include "Common/utility.h"       // for move, copy
+#include "Parser/parserutility.h" // for notZeroExpr
 #include "SymTab/Mangler.h"
 #include "Tuples/Tuples.h"        // for handleTupleAssignment
@@ -1502,9 +1503,11 @@
 	void Finder::postvisit( const ast::LogicalExpr * logicalExpr ) {
 		CandidateFinder finder1( context, tenv );
-		finder1.find( logicalExpr->arg1, ResolveMode::withAdjustment() );
+		ast::ptr<ast::Expr> arg1 = notZeroExpr( logicalExpr->arg1 );
+		finder1.find( arg1, ResolveMode::withAdjustment() );
 		if ( finder1.candidates.empty() ) return;
 
 		CandidateFinder finder2( context, tenv );
-		finder2.find( logicalExpr->arg2, ResolveMode::withAdjustment() );
+		ast::ptr<ast::Expr> arg2 = notZeroExpr( logicalExpr->arg2 );
+		finder2.find( arg2, ResolveMode::withAdjustment() );
 		if ( finder2.candidates.empty() ) return;
 
@@ -1532,5 +1535,6 @@
 		// candidates for condition
 		CandidateFinder finder1( context, tenv );
-		finder1.find( conditionalExpr->arg1, ResolveMode::withAdjustment() );
+		ast::ptr<ast::Expr> arg1 = notZeroExpr( conditionalExpr->arg1 );
+		finder1.find( arg1, ResolveMode::withAdjustment() );
 		if ( finder1.candidates.empty() ) return;
 
