Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/ExpressionFactory.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/ExpressionFactory.java	(revision 17779)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/ExpressionFactory.java	(revision 17780)
@@ -56,13 +56,16 @@
 
         static Factory ofNumberVarArgs(double identity, DoubleUnaryOperator unaryOperator, DoubleBinaryOperator operator) {
-            return args -> env -> args.isEmpty()
-                    ? identity
-                    : args.size() == 1
-                    ? unaryOperator.applyAsDouble(Cascade.convertTo(args.get(0).evaluate(env), Double.class))
-                    : args.stream()
-                    .map(arg -> Cascade.convertTo(arg.evaluate(env), Double.class))
-                    .filter(Objects::nonNull)
-                    .reduce(operator::applyAsDouble)
-                    .orElse(null);
+            return args -> env -> {
+                if (args.isEmpty()) {
+                    return identity;
+                } else if (args.size() == 1) {
+                    return unaryOperator.applyAsDouble(Cascade.convertTo(args.get(0).evaluate(env), Double.class));
+                } else {
+                    return args.stream()
+                            .map(arg -> Cascade.convertTo(arg.evaluate(env), Double.class))
+                            .filter(Objects::nonNull)
+                            .reduce(operator::applyAsDouble).orElse(null);
+                }
+            };
         }
 
Index: /trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParserTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParserTest.java	(revision 17779)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParserTest.java	(revision 17780)
@@ -613,4 +613,6 @@
                 "neg: -13;" +
                 "not: !0;" +
+                "null1: tag(x1) + tag(x2);" +
+                "null2: 3 + tag(does_not_exist) + 5;" +
                 "}");
         source.loadStyleSource();
@@ -623,4 +625,6 @@
         assertEquals(-13.0, mc.getCascade(null).get("neg"));
         assertEquals(true, mc.getCascade(null).get("not"));
+        assertNull(mc.getCascade(null).get("null1"));
+        assertEquals(8.0, mc.getCascade(null).get("null2"));
     }
 
