diff --git a/ginac/power.cpp b/ginac/power.cpp
index 87792b9..bb7dc8b 100644
--- a/ginac/power.cpp
+++ b/ginac/power.cpp
@@ -289,11 +289,11 @@ ex power::map(map_function & f) const
 
 bool power::is_polynomial(const ex & var) const
 {
-	if (exponent.has(var))
-		return false;
-	if (!exponent.info(info_flags::nonnegint))
-		return false;
-	return basis.is_polynomial(var);
+	if (!basis.has(var) && !exponent.has(var))
+		return true;
+	if (basis.is_polynomial(var) && exponent.info(info_flags::nonnegint))
+		return true;
+	return false;
 }
 
 int power::degree(const ex & s) const
