Index: trunk/src/org/openstreetmap/josm/gui/mappaint/Cascade.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/Cascade.java	(revision 3903)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/Cascade.java	(revision 3904)
@@ -107,6 +107,11 @@
         if (o instanceof Boolean)
             return (Boolean) o;
-        if (o instanceof String)
-            return Boolean.parseBoolean((String) o);
+        if (o instanceof String) {
+            String s = (String) o;
+            if ("true".equals(o) || "yes".equals(o))
+                return true;
+            if ("false".equals(o) || "no".equals(o))
+                return false;
+        }
         return null;
     }
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java	(revision 3903)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java	(revision 3904)
@@ -12,4 +12,5 @@
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.mappaint.Cascade;
 import org.openstreetmap.josm.gui.mappaint.Environment;
 import org.openstreetmap.josm.gui.mappaint.mapcss.Condition.Op;
@@ -169,8 +170,6 @@
         @Override
         public boolean applies(Environment env) {
-            Object o = e.evaluate(env);
-            if (o instanceof Boolean)
-                return (Boolean) o;
-            return false;
+            Boolean b = Cascade.convertTo(e.evaluate(env), Boolean.class);
+            return b != null && b;
         }
 
