Index: src/org/openstreetmap/josm/resources/data/validator/numeric.mapcss
===================================================================
--- src/org/openstreetmap/josm/resources/data/validator/numeric.mapcss    (revision 15965)
+++ src/org/openstreetmap/josm/resources/data/validator/numeric.mapcss    (working copy)
@@ -59,6 +59,31 @@
   assertNoMatch: "node maxheight=16'3\"";
 }
 
+/* maxstay=0 is unclear. Was in presets, see #11253 */
+*[maxstay=0] {
+  throwWarning: tr("{0} is unclear.", "maxstay");
+  suggestAlternative: "maxstay=unlimited or maxstay=no";
+  assertMatch: "node maxstay=0";
+  assertMatch: "way maxstay=0";
+  assertNoMatch: "node maxstay=2";
+  assertNoMatch: "way maxstay=no";
+}
+
+/* maxstay needs unit. Was in presets without it, see #11253 */
+*[maxstay][maxstay !~ /^(([0-9]+\.?[0-9]*( (minute|minutes|hour|hours|h|day|days|d|year|years|a)))|(no|unlimited|0))$/] {
+  throwWarning: tr("{0}: no default unit; only positive values; period is separator; space between value and unit", "maxstay");
+  assertMatch: "way maxstay=something";
+  assertMatch: "way maxstay=-5";
+  assertMatch: "node maxstay=180";
+  assertMatch: "way maxstay=66minutes";
+  assertNoMatch: "node maxstay=0";
+  assertNoMatch: "way maxstay=no";
+  assertNoMatch: "node maxstay=unlimited";
+  assertNoMatch: "way maxstay=66 minutes";
+  assertNoMatch: "way maxstay=2.5 hours";
+  assertNoMatch: "node maxstay=7 h";
+}
+
 way[width][width !~ /^(([0-9]+\.?[0-9]*( [a-z]+)?)|([0-9]+\'([0-9]+\.?[0-9]*\")?))$/] {
   throwWarning: tr("{0}: meters is default; period is separator; if units, put space then unit", "width");
   assertMatch: "way width=something";
@@ -80,6 +105,7 @@
   assertNoMatch: "way maxwidth=2.5";
   assertNoMatch: "way maxwidth=7 ft";
 }
+
 way[maxspeed][maxspeed !~ /^(signals|none|unposted|variable|walk|[1-9][0-9]*( [a-z]+)?|[A-Z][A-Z]:(urban|rural|living_street|motorway))$/],
 way[maxspeed:forward][maxspeed:forward !~ /^(signals|none|unposted|variable|walk|[1-9][0-9]*( [a-z]+)?|[A-Z][A-Z]:(urban|rural|living_street|motorway))$/],
 way[maxspeed:backward][maxspeed:backward !~ /^(signals|none|unposted|variable|walk|[1-9][0-9]*( [a-z]+)?|[A-Z][A-Z]:(urban|rural|living_street|motorway))$/] {
