Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/ExpressionFactory.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/ExpressionFactory.java	(revision 17915)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/ExpressionFactory.java	(revision 17916)
@@ -228,5 +228,5 @@
         FACTORY_MAP.put("rgba", Factory.of(float.class, float.class, float.class, float.class, Functions::rgba));
         FACTORY_MAP.put("role", Factory.ofEnv(Functions::role));
-        FACTORY_MAP.put("round", Factory.of(Math::acos));
+        FACTORY_MAP.put("round", Factory.of(Math::round));
         FACTORY_MAP.put("setting", Factory.ofEnv(String.class, Functions::setting));
         FACTORY_MAP.put("signum", Factory.of(Math::signum));
Index: /trunk/test/unit/org/openstreetmap/josm/data/validation/tests/MapCSSTagCheckerTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/data/validation/tests/MapCSSTagCheckerTest.java	(revision 17915)
+++ /trunk/test/unit/org/openstreetmap/josm/data/validation/tests/MapCSSTagCheckerTest.java	(revision 17916)
@@ -425,6 +425,8 @@
 
     /**
-     * Non-regression test for <a href="https://josm.openstreetmap.de/ticket/19053">Bug #19053</a>.
-     * Mapcss rule with group.
+     * Non-regression test for <a href="https://josm.openstreetmap.de/ticket/19053">Bug #19053</a> and
+     * <a href="https://josm.openstreetmap.de/ticket/20957">Bug #20957</a>
+     * - MapCSS rule with group.
+     * - MapCSS functions round, tag, *, /
      * @throws ParseException if a parsing error occurs
      */
@@ -434,6 +436,8 @@
                 "*[ele][ele =~ /^-?[0-9]+\\.[0-9][0-9][0-9]+$/] {"
                         + "throwWarning: tr(\"{0}\",\"{0.tag}\");"
+                        + "fixAdd: concat(\"ele=\", round(tag(\"ele\")*100)/100);"
                         + "group: tr(\"Unnecessary amount of decimal places\");" + "}");
         final OsmPrimitive p = OsmUtils.createPrimitive("node ele=12.123456");
+        new DataSet(p);
         final Collection<TestError> errors = test.getErrorsForPrimitive(p, false);
         assertEquals(1, errors.size());
@@ -441,4 +445,9 @@
         assertEquals("3000_ele=12.123456", errors.iterator().next().getIgnoreSubGroup());
         assertEquals("3000_Unnecessary amount of decimal places", errors.iterator().next().getIgnoreGroup());
+        Command fix = errors.iterator().next().getFix();
+        assertNotNull(fix);
+        assertEquals("12.123456", p.get("ele"));
+        fix.executeCommand();
+        assertEquals("12.12", p.get("ele"));
     }
 
Index: /trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParserTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParserTest.java	(revision 17915)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParserTest.java	(revision 17916)
@@ -615,4 +615,5 @@
                 "null1: tag(x1) + tag(x2);" +
                 "null2: 3 + tag(does_not_exist) + 5;" +
+                "rounding: concat(\"ele=\", round(tag(\"ele\")*100)/100);" +
                 "}");
         source.loadStyleSource();
@@ -628,4 +629,5 @@
         assertNull(mc.getCascade(null).get("null1"));
         assertEquals(8.0, mc.getCascade(null).get("null2"));
+        assertEquals(8.0, mc.getCascade(null).get("rounding"));
     }
 
@@ -738,3 +740,15 @@
         assertNull(mc.getCascade(null).get("name"));
     }
+
+    /**
+     * Non-regression test for <a href="https://josm.openstreetmap.de/ticket/20957">Bug #20957</a>.
+     */
+    @Test
+    void testTicket20957() {
+        MapCSSStyleSource source = new MapCSSStyleSource("node {fixAdd: concat(\"ele=\", round(tag(\"ele\")*100)/100)}");
+        source.loadStyleSource();
+        MultiCascade mc = new MultiCascade();
+        source.apply(mc, OsmUtils.createPrimitive("node ele=12.123456"), 20, false);
+        assertEquals("ele=12.12", mc.getCascade(null).get("fixAdd"));
+    }
 }
