Index: /trunk/resources/data/defaultpresets.xml
===================================================================
--- /trunk/resources/data/defaultpresets.xml	(revision 18384)
+++ /trunk/resources/data/defaultpresets.xml	(revision 18385)
@@ -96,6 +96,5 @@
     <chunk id="railway_service_gauge_electrified_yesno">
         <reference ref="railway_service" />
-        <combo key="tracks" text="Tracks" text_context="railway" values="1,2,3,4" length="4" />
-        <combo key="gauge" text="Gauge (mm)" values="1668,1676,1674,1600,1524,1520,1495,1435,1067,1000,914,762,760,750" length="4" />
+        <combo key="gauge" text="Gauge (mm)" values="1676,1668,1638,1600,1588,1581,1524,1520,1495,1458,1450,1435,1372,1219,1067,1000,914,900,891,762,760,750,610,600" length="4" />
         <reference ref="railway_electrified_yesno" />
     </chunk>
@@ -2379,5 +2378,7 @@
             <optional>
                 <combo key="usage" text="Usage" values="main,branch,industrial,military,tourism,freight" />
-                <reference ref="railway_service_gauge_electrified_yesno" />
+                <reference ref="railway_service" />
+                <combo key="gauge" text="Gauge (mm)" values="1372,1219,1067,1000,914,900,891,762,760,750,610,600" length="4" />
+                <reference ref="railway_electrified_yesno" />
             </optional>
         </item> <!-- Narrow Gauge Rail -->
Index: /trunk/resources/data/validator/numeric.mapcss
===================================================================
--- /trunk/resources/data/validator/numeric.mapcss	(revision 18384)
+++ /trunk/resources/data/validator/numeric.mapcss	(revision 18385)
@@ -391,11 +391,41 @@
 }
 
-way[gauge][gauge !~ /^([1-9][0-9]{1,3}(;[1-9][0-9]{1,3})*|broad|standard|narrow)$/] {
+way[gauge][gauge      =~ /^(broad|standard|narrow)$/],
+relation[gauge][gauge =~ /^(broad|standard|narrow)$/] {
+  throwWarning: tr("imprecise value of {0}", "{0.tag}");
+  suggestAlternative: tr("an integer value in millimeters, without unit");
+  set imprecise_gauge;
+  assertNoMatch: "way gauge=something";
+  assertNoMatch: "way gauge=1435";
+  assertNoMatch: "way gauge=1000;1435";
+  assertNoMatch: "way gauge=2''10'";
+  assertMatch:   "way gauge=standard";
+  assertMatch:   "way gauge=narrow";
+}
+way[gauge][gauge      !~ /^([1-9][0-9]{1,3}(;[1-9][0-9]{1,3})*)$/]!.imprecise_gauge,
+relation[gauge][gauge !~ /^([1-9][0-9]{1,3}(;[1-9][0-9]{1,3})*)$/]!.imprecise_gauge {
   throwWarning: tr("unusual value of {0}", "{0.key}");
-  assertMatch: "way gauge=something";
+  set unusual_gauge;
+  assertMatch:   "way gauge=something";
+  assertMatch:   "way gauge=2''10'";
   assertNoMatch: "way gauge=1435";
   assertNoMatch: "way gauge=1000;1435";
   assertNoMatch: "way gauge=standard";
   assertNoMatch: "way gauge=narrow";
+}
+/* #21866 - warn on narrow_railway gauge values outside 89..1434 range, including multi values */
+way[/railway$/      =~ /^narrow_gauge$/][gauge][gauge !~ /^((14(?:3[0-4]|[4-9])|(?:14[0-2]|(?:1[0-3]|9)[0-9])[0-9]?|143|(?:[2-7][0-9]|1[5-9])[0-9]|8(?:[0-8][0-9]|9[0-9]?));?)+$/]!.imprecise_gauge!.unusual_gauge,
+relation[/railway$/ =~ /^narrow_gauge$/][gauge][gauge !~ /^((14(?:3[0-4]|[4-9])|(?:14[0-2]|(?:1[0-3]|9)[0-9])[0-9]?|143|(?:[2-7][0-9]|1[5-9])[0-9]|8(?:[0-8][0-9]|9[0-9]?));?)+$/]!.imprecise_gauge!.unusual_gauge[type=route]{
+  group: tr("suspicious tag combination");
+  throwWarning:  tr("unusual {0} value on narrow gauge railway", "{1.key}");
+  assertMatch:   "way railway=narrow_gauge gauge=88";
+  assertNoMatch: "way railway=narrow_gauge gauge=89";
+  assertNoMatch: "way railway=narrow_gauge gauge=1434";
+  assertMatch:   "way railway=narrow_gauge gauge=1435";
+  assertMatch:   "way railway=narrow_gauge gauge=1435;1500";
+  assertMatch:   "way railway=narrow_gauge gauge=60;600";
+  assertNoMatch: "way railway=narrow_gauge gauge=2''10'";
+  assertNoMatch: "way railway=narrow_gauge gauge=something";
+  assertNoMatch: "way railway=narrow_gauge gauge=narrow";
 }
 
