diff --git a/localedata/locales/aa_DJ b/localedata/locales/aa_DJ
index 4c4cf1821c..ddeac178b6 100644
--- a/localedata/locales/aa_DJ
+++ b/localedata/locales/aa_DJ
@@ -80,12 +80,11 @@ END LC_MEASUREMENT
 
 
 LC_MONETARY
-%
 int_curr_symbol       "DJF "
 currency_symbol       "Fdj"
 mon_decimal_point     "."
 mon_thousands_sep     " "
-mon_grouping          3;3
+mon_grouping          3
 positive_sign         ""
 negative_sign         "-"
 int_frac_digits       2
@@ -96,18 +95,13 @@ n_cs_precedes         1
 n_sep_by_space        0
 p_sign_posn           1
 n_sign_posn           1
-%
 END LC_MONETARY
 
 
 LC_NUMERIC
-%
-% This is the POSIX Locale definition for the LC_NUMERIC category.
-%
 decimal_point          "."
 thousands_sep          ""
-grouping               0;0
-%
+grouping               -1
 END LC_NUMERIC
 
 
diff --git a/localedata/locales/am_ET b/localedata/locales/am_ET
index 4483b24e40..4dfa012570 100644
--- a/localedata/locales/am_ET
+++ b/localedata/locales/am_ET
@@ -908,7 +908,7 @@ int_curr_symbol       "ETB "
 currency_symbol       "Br"
 mon_decimal_point     "."
 mon_thousands_sep     ","
-mon_grouping          3;3
+mon_grouping          3
 positive_sign         ""
 negative_sign         "-"
 int_frac_digits       2
@@ -928,7 +928,7 @@ LC_NUMERIC
 %
 decimal_point          "."
 thousands_sep          ","
-grouping               3;3
+grouping               3
 %
 END LC_NUMERIC
 
diff --git a/localedata/locales/az_AZ b/localedata/locales/az_AZ
index ee21ad5c63..aaf58a948d 100644
--- a/localedata/locales/az_AZ
+++ b/localedata/locales/az_AZ
@@ -159,7 +159,7 @@ int_curr_symbol           "AZN "
 currency_symbol           "₼"
 mon_decimal_point         "."
 mon_thousands_sep         " "
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
@@ -175,7 +175,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point             ","
 thousands_sep             "."
-grouping                  3;3
+grouping                  3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/be_BY b/localedata/locales/be_BY
index 5bde40d5fa..3ecaa7f5a7 100644
--- a/localedata/locales/be_BY
+++ b/localedata/locales/be_BY
@@ -106,7 +106,7 @@ int_curr_symbol           "BYR "
 currency_symbol           "руб"
 mon_decimal_point         "."
 mon_thousands_sep         " "
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
@@ -122,7 +122,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point             ","
 thousands_sep             "."
-grouping                  3;3
+grouping                  3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/be_BY@latin b/localedata/locales/be_BY@latin
index 16c2dfdb25..5a02a7a330 100644
--- a/localedata/locales/be_BY@latin
+++ b/localedata/locales/be_BY@latin
@@ -128,7 +128,7 @@ int_curr_symbol           "BYR "
 currency_symbol           "Rub"
 mon_decimal_point         "."
 mon_thousands_sep         " "
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
diff --git a/localedata/locales/bg_BG b/localedata/locales/bg_BG
index b8d74ab7a4..159a6c3334 100644
--- a/localedata/locales/bg_BG
+++ b/localedata/locales/bg_BG
@@ -252,7 +252,7 @@ int_curr_symbol           "BGN "
 currency_symbol           "лв."
 mon_decimal_point         ","
 mon_thousands_sep         " "
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
@@ -268,7 +268,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point             ","
 thousands_sep             ""
-grouping                  3;3
+grouping                  3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/bs_BA b/localedata/locales/bs_BA
index 9c6ea08c10..3690ca62dc 100644
--- a/localedata/locales/bs_BA
+++ b/localedata/locales/bs_BA
@@ -76,7 +76,7 @@ int_curr_symbol           "BAM "
 currency_symbol           "KM"
 mon_decimal_point         ","
 mon_thousands_sep         " "
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
@@ -92,7 +92,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point             ","
 thousands_sep             ""
-grouping                  0;0
+grouping                  -1
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/ca_ES b/localedata/locales/ca_ES
index 3b8b92c5a3..3971f23e6c 100644
--- a/localedata/locales/ca_ES
+++ b/localedata/locales/ca_ES
@@ -72,7 +72,7 @@ int_curr_symbol      "EUR "
 currency_symbol      "€"
 mon_decimal_point    ","
 mon_thousands_sep    "."
-mon_grouping         3;3
+mon_grouping         3
 positive_sign        ""
 negative_sign        "-"
 int_frac_digits      2
@@ -88,7 +88,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point        ","
 thousands_sep        "."
-grouping             3;3
+grouping             3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/ce_RU b/localedata/locales/ce_RU
index 6a00088528..fc99aa420f 100644
--- a/localedata/locales/ce_RU
+++ b/localedata/locales/ce_RU
@@ -108,7 +108,7 @@ int_curr_symbol    "RUB "
 currency_symbol    "₽"
 mon_decimal_point  "."
 mon_thousands_sep  " "
-mon_grouping       3;3
+mon_grouping       3
 positive_sign      ""
 negative_sign      "-"
 frac_digits        2
diff --git a/localedata/locales/crh_UA b/localedata/locales/crh_UA
index 0b5beb4c6e..172cca8f72 100644
--- a/localedata/locales/crh_UA
+++ b/localedata/locales/crh_UA
@@ -117,7 +117,7 @@ int_curr_symbol           "UAH "
 currency_symbol           "₴"
 mon_decimal_point         "."
 mon_thousands_sep         " "
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
@@ -133,7 +133,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point             ","
 thousands_sep             "."
-grouping                  3;3
+grouping                  3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/cs_CZ b/localedata/locales/cs_CZ
index bfcdeec369..292eb584d1 100644
--- a/localedata/locales/cs_CZ
+++ b/localedata/locales/cs_CZ
@@ -238,7 +238,7 @@ int_curr_symbol		"CZK "
 currency_symbol		"Kč"
 mon_decimal_point	","
 mon_thousands_sep	" "
-mon_grouping      	3;3
+mon_grouping      	3
 positive_sign		""
 negative_sign		"-"
 int_frac_digits		2
@@ -259,7 +259,7 @@ LC_NUMERIC
 
 decimal_point		","
 thousands_sep		" "
-grouping		3;3
+grouping		3
 
 END LC_NUMERIC
 
diff --git a/localedata/locales/cv_RU b/localedata/locales/cv_RU
index 8e90fa32f2..e4c9877cad 100644
--- a/localedata/locales/cv_RU
+++ b/localedata/locales/cv_RU
@@ -119,7 +119,7 @@ currency_symbol "₽"
 
 mon_decimal_point         "."
 mon_thousands_sep         " "
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
diff --git a/localedata/locales/da_DK b/localedata/locales/da_DK
index eb056b7463..2699cdb66d 100644
--- a/localedata/locales/da_DK
+++ b/localedata/locales/da_DK
@@ -178,7 +178,7 @@ int_curr_symbol         "DKK "
 currency_symbol         "kr."
 mon_decimal_point       ","
 mon_thousands_sep       "."
-mon_grouping            3;3
+mon_grouping            3
 positive_sign           ""
 negative_sign           "-"
 int_frac_digits         2
@@ -194,7 +194,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point           ","
 thousands_sep           "."
-grouping                3;3
+grouping                3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/de_AT b/localedata/locales/de_AT
index da1752c106..db950d662b 100644
--- a/localedata/locales/de_AT
+++ b/localedata/locales/de_AT
@@ -66,7 +66,7 @@ int_curr_symbol           "EUR "
 currency_symbol           "€"
 mon_decimal_point         ","
 mon_thousands_sep         " "
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
diff --git a/localedata/locales/de_BE b/localedata/locales/de_BE
index a5fef77f59..65e5767faf 100644
--- a/localedata/locales/de_BE
+++ b/localedata/locales/de_BE
@@ -66,7 +66,7 @@ int_curr_symbol           "EUR "
 currency_symbol           "€"
 mon_decimal_point         ","
 mon_thousands_sep         "."
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
diff --git a/localedata/locales/de_CH b/localedata/locales/de_CH
index 45a1f43cdc..4845bd2c0c 100644
--- a/localedata/locales/de_CH
+++ b/localedata/locales/de_CH
@@ -66,7 +66,7 @@ int_curr_symbol           "CHF "
 currency_symbol           "CHF"
 mon_decimal_point         "."
 mon_thousands_sep         "’"
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
@@ -82,7 +82,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point             "."
 thousands_sep             "’"
-grouping                  3;3
+grouping                  3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/de_DE b/localedata/locales/de_DE
index a10d1efae6..b914337d5d 100644
--- a/localedata/locales/de_DE
+++ b/localedata/locales/de_DE
@@ -93,7 +93,7 @@ int_curr_symbol     "EUR "
 currency_symbol     "€"
 mon_decimal_point   ","
 mon_thousands_sep   "."
-mon_grouping        3;3
+mon_grouping        3
 positive_sign       ""
 negative_sign       "-"
 int_frac_digits     2
@@ -110,7 +110,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point   ","
 thousands_sep   "."
-grouping        3;3
+grouping        3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/de_LU b/localedata/locales/de_LU
index 10f4c7de5d..4d46628172 100644
--- a/localedata/locales/de_LU
+++ b/localedata/locales/de_LU
@@ -66,7 +66,7 @@ int_curr_symbol           "EUR "
 currency_symbol           "€"
 mon_decimal_point         ","
 mon_thousands_sep         "."
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
diff --git a/localedata/locales/dv_MV b/localedata/locales/dv_MV
index f223f8c1ab..8ce2cb2315 100644
--- a/localedata/locales/dv_MV
+++ b/localedata/locales/dv_MV
@@ -64,7 +64,7 @@ int_curr_symbol "MVR "
 currency_symbol "ރ."
 mon_decimal_point "."
 mon_thousands_sep ","
-mon_grouping  3;3
+mon_grouping  3
 positive_sign ""
 negative_sign "-"
 int_frac_digits 2
@@ -80,7 +80,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point "."
 thousands_sep ","
-grouping 3;3
+grouping 3
 END LC_NUMERIC
 
 % Since their is no abbreviated version of the days in dhivehi I have used the
diff --git a/localedata/locales/el_CY b/localedata/locales/el_CY
index fd24e3dbd5..ab940f1b94 100644
--- a/localedata/locales/el_CY
+++ b/localedata/locales/el_CY
@@ -56,7 +56,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point             ","
 thousands_sep             "."
-grouping                  0;0
+grouping                  -1
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/el_GR b/localedata/locales/el_GR
index 4dd5c7b95b..801f1c0824 100644
--- a/localedata/locales/el_GR
+++ b/localedata/locales/el_GR
@@ -89,7 +89,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point             ","
 thousands_sep             "."
-grouping                  0;0
+grouping                  -1
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/en_AG b/localedata/locales/en_AG
index 58d5b1a819..29c58ee063 100644
--- a/localedata/locales/en_AG
+++ b/localedata/locales/en_AG
@@ -50,7 +50,7 @@ int_curr_symbol     "XCD "
 currency_symbol     "$"
 mon_decimal_point   "."
 mon_thousands_sep   ","
-mon_grouping        3;3
+mon_grouping        3
 positive_sign       ""
 negative_sign       "-"
 int_frac_digits     2
diff --git a/localedata/locales/en_AU b/localedata/locales/en_AU
index d60f3e355b..3795e1270a 100644
--- a/localedata/locales/en_AU
+++ b/localedata/locales/en_AU
@@ -62,7 +62,7 @@ int_curr_symbol         "AUD "
 currency_symbol         "$"
 mon_decimal_point       "."
 mon_thousands_sep       ","
-mon_grouping            3;3
+mon_grouping            3
 positive_sign           ""
 negative_sign           "-"
 int_frac_digits         2
@@ -78,7 +78,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point           "."
 thousands_sep           ","
-grouping                3;3
+grouping                3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/en_BW b/localedata/locales/en_BW
index d3979e0190..12a46f4178 100644
--- a/localedata/locales/en_BW
+++ b/localedata/locales/en_BW
@@ -59,7 +59,7 @@ int_curr_symbol         "BWP "
 currency_symbol         "P"
 mon_decimal_point       "."
 mon_thousands_sep       ","
-mon_grouping            3;3
+mon_grouping            3
 positive_sign           ""
 negative_sign           "-"
 int_frac_digits         2
diff --git a/localedata/locales/en_CA b/localedata/locales/en_CA
index aa55186c08..ca8ac5813a 100644
--- a/localedata/locales/en_CA
+++ b/localedata/locales/en_CA
@@ -70,7 +70,7 @@ int_curr_symbol         "CAD "
 currency_symbol         "$"
 mon_decimal_point       "."
 mon_thousands_sep       ","
-mon_grouping            3;3
+mon_grouping            3
 positive_sign           ""
 negative_sign           "-"
 int_frac_digits         2
@@ -86,7 +86,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point           "."
 thousands_sep           ","
-grouping                3;3
+grouping                3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/en_DK b/localedata/locales/en_DK
index b7fde84aa2..1632bbd670 100644
--- a/localedata/locales/en_DK
+++ b/localedata/locales/en_DK
@@ -67,7 +67,7 @@ int_curr_symbol      "DKK "
 currency_symbol      "kr."
 mon_decimal_point    ","
 mon_thousands_sep    "."
-mon_grouping         3;3
+mon_grouping         3
 positive_sign        ""
 negative_sign        "-"
 int_frac_digits      2
@@ -83,7 +83,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point        ","
 thousands_sep        "."
-grouping             3;3
+grouping             3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/en_GB b/localedata/locales/en_GB
index 02a8a44799..99fac20df4 100644
--- a/localedata/locales/en_GB
+++ b/localedata/locales/en_GB
@@ -63,7 +63,7 @@ int_curr_symbol         "GBP "
 currency_symbol         "£"
 mon_decimal_point       "."
 mon_thousands_sep       ","
-mon_grouping            3;3
+mon_grouping            3
 positive_sign           ""
 negative_sign           "-"
 int_frac_digits         2
@@ -79,7 +79,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point           "."
 thousands_sep           ","
-grouping                3;3
+grouping                3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/en_IE b/localedata/locales/en_IE
index 4b62e308bb..d876e10eea 100644
--- a/localedata/locales/en_IE
+++ b/localedata/locales/en_IE
@@ -62,7 +62,7 @@ int_curr_symbol         "EUR "
 currency_symbol         "€"
 mon_decimal_point       "."
 mon_thousands_sep       ","
-mon_grouping            3;3
+mon_grouping            3
 positive_sign           ""
 negative_sign           "-"
 int_frac_digits         2
diff --git a/localedata/locales/en_NG b/localedata/locales/en_NG
index 09c4238161..e9b5490d63 100644
--- a/localedata/locales/en_NG
+++ b/localedata/locales/en_NG
@@ -62,7 +62,7 @@ int_curr_symbol         "NGN "
 currency_symbol         "₦"
 mon_decimal_point       "."
 mon_thousands_sep       ","
-mon_grouping            3;3
+mon_grouping            3
 positive_sign           ""
 negative_sign           "-"
 int_frac_digits         2
@@ -79,7 +79,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point           "."
 thousands_sep           ","
-grouping                3;3
+grouping                3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/en_NZ b/localedata/locales/en_NZ
index b6ff6ff0b4..6eaa18d4b0 100644
--- a/localedata/locales/en_NZ
+++ b/localedata/locales/en_NZ
@@ -62,7 +62,7 @@ int_curr_symbol         "NZD "
 currency_symbol         "$"
 mon_decimal_point       "."
 mon_thousands_sep       ","
-mon_grouping            3;3
+mon_grouping            3
 positive_sign           ""
 negative_sign           "-"
 int_frac_digits         2
@@ -78,7 +78,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point           "."
 thousands_sep           ","
-grouping                3;3
+grouping                3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/en_SC b/localedata/locales/en_SC
index 802e5f7945..4c0ba79f93 100644
--- a/localedata/locales/en_SC
+++ b/localedata/locales/en_SC
@@ -53,7 +53,7 @@ int_curr_symbol     "SCR "
 currency_symbol     "SR"
 mon_decimal_point   "."
 mon_thousands_sep   ","
-mon_grouping        3;3
+mon_grouping        3
 positive_sign       ""
 negative_sign       "-"
 int_frac_digits     2
diff --git a/localedata/locales/en_US b/localedata/locales/en_US
index 8c34420dc0..f2e1fbacc5 100644
--- a/localedata/locales/en_US
+++ b/localedata/locales/en_US
@@ -57,7 +57,7 @@ int_curr_symbol     "USD "
 currency_symbol     "$"
 mon_decimal_point   "."
 mon_thousands_sep   ","
-mon_grouping        3;3
+mon_grouping        3
 positive_sign       ""
 negative_sign       "-"
 int_frac_digits     2
@@ -76,7 +76,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point   "."
 thousands_sep   ","
-grouping        3;3
+grouping        3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/en_ZA b/localedata/locales/en_ZA
index 5ddc3f2c5d..b6551c633a 100644
--- a/localedata/locales/en_ZA
+++ b/localedata/locales/en_ZA
@@ -93,7 +93,7 @@ int_curr_symbol         "ZAR "
 currency_symbol         "R"
 mon_decimal_point       "."
 mon_thousands_sep       ","
-mon_grouping            3;3
+mon_grouping            3
 positive_sign           ""
 negative_sign           "-"
 int_frac_digits         2
@@ -109,7 +109,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point           "."
 thousands_sep           ","
-grouping                3;3
+grouping                3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/en_ZW b/localedata/locales/en_ZW
index 6f1d3eac34..03deca287a 100644
--- a/localedata/locales/en_ZW
+++ b/localedata/locales/en_ZW
@@ -59,7 +59,7 @@ int_curr_symbol         "USD "
 currency_symbol         "$"
 mon_decimal_point       "."
 mon_thousands_sep       ","
-mon_grouping            3;3
+mon_grouping            3
 positive_sign           ""
 negative_sign           "-"
 int_frac_digits         2
diff --git a/localedata/locales/eo b/localedata/locales/eo
index 589a36c3df..6eb26f374a 100644
--- a/localedata/locales/eo
+++ b/localedata/locales/eo
@@ -120,7 +120,7 @@ int_curr_symbol     "XDR "
 currency_symbol     "<U00A4>"
 mon_decimal_point   ","
 mon_thousands_sep   "<U202F>"
-mon_grouping        3;3
+mon_grouping        3
 positive_sign       ""
 negative_sign       "-"
 int_frac_digits     2
@@ -136,7 +136,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point ","
 thousands_sep ""
-grouping      0;0
+grouping      -1
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/es_AR b/localedata/locales/es_AR
index e8faf3547a..b80896f0ac 100644
--- a/localedata/locales/es_AR
+++ b/localedata/locales/es_AR
@@ -67,7 +67,7 @@ int_curr_symbol      "ARS "
 currency_symbol      "$"
 mon_decimal_point    ","
 mon_thousands_sep    "."
-mon_grouping         3;3
+mon_grouping         3
 positive_sign        ""
 negative_sign        "-"
 int_frac_digits      2
@@ -83,7 +83,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point        ","
 thousands_sep        "."
-grouping             3;3
+grouping             3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/es_BO b/localedata/locales/es_BO
index faa0928b80..e784fe6465 100644
--- a/localedata/locales/es_BO
+++ b/localedata/locales/es_BO
@@ -67,7 +67,7 @@ int_curr_symbol      "BOB "
 currency_symbol      "Bs"
 mon_decimal_point    ","
 mon_thousands_sep    "."
-mon_grouping         3;3
+mon_grouping         3
 positive_sign        ""
 negative_sign        "-"
 int_frac_digits      2
diff --git a/localedata/locales/es_CL b/localedata/locales/es_CL
index 4f069915c7..728d8b775f 100644
--- a/localedata/locales/es_CL
+++ b/localedata/locales/es_CL
@@ -67,7 +67,7 @@ int_curr_symbol      "CLP "
 currency_symbol      "$"
 mon_decimal_point    ","
 mon_thousands_sep    "."
-mon_grouping         3;3
+mon_grouping         3
 positive_sign        ""
 negative_sign        "-"
 int_frac_digits      2
diff --git a/localedata/locales/es_CO b/localedata/locales/es_CO
index ba7b104dfd..5438727241 100644
--- a/localedata/locales/es_CO
+++ b/localedata/locales/es_CO
@@ -67,7 +67,7 @@ int_curr_symbol      "COP "
 currency_symbol      "$"
 mon_decimal_point    ","
 mon_thousands_sep    "."
-mon_grouping         3;3
+mon_grouping         3
 positive_sign        ""
 negative_sign        "-"
 int_frac_digits      2
diff --git a/localedata/locales/es_CR b/localedata/locales/es_CR
index 09a191bf26..7ee42d302d 100644
--- a/localedata/locales/es_CR
+++ b/localedata/locales/es_CR
@@ -60,7 +60,7 @@ currency_symbol      "₡"
 % Decreto Ejecutivo 29660
 mon_decimal_point    ","
 mon_thousands_sep    " "
-mon_grouping         3;3
+mon_grouping         3
 positive_sign        ""
 negative_sign        "-"
 int_frac_digits      2
@@ -77,7 +77,7 @@ LC_NUMERIC
 % Decreto Ejecutivo 29660
 decimal_point        ","
 thousands_sep        " "
-grouping             3;3
+grouping             3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/es_CU b/localedata/locales/es_CU
index dcfda48872..61ceea80a1 100644
--- a/localedata/locales/es_CU
+++ b/localedata/locales/es_CU
@@ -70,7 +70,7 @@ int_curr_symbol      "CUP "
 currency_symbol      "$"
 mon_decimal_point    ","
 mon_thousands_sep    "."
-mon_grouping         3;3
+mon_grouping         3
 positive_sign        ""
 negative_sign        "-"
 int_frac_digits      2
@@ -86,7 +86,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point        ","
 thousands_sep        "."
-grouping             0;0
+grouping             -1
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/es_DO b/localedata/locales/es_DO
index 12ca5f3186..f1a5af99ce 100644
--- a/localedata/locales/es_DO
+++ b/localedata/locales/es_DO
@@ -67,7 +67,7 @@ int_curr_symbol      "DOP "
 currency_symbol      "RD$"
 mon_decimal_point    "."
 mon_thousands_sep    ","
-mon_grouping         3;3
+mon_grouping         3
 positive_sign        ""
 negative_sign        "-"
 int_frac_digits      2
@@ -83,7 +83,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point        "."
 thousands_sep        ","
-grouping             3;3
+grouping             3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/es_EC b/localedata/locales/es_EC
index cc441ef162..1c902543b9 100644
--- a/localedata/locales/es_EC
+++ b/localedata/locales/es_EC
@@ -67,7 +67,7 @@ int_curr_symbol      "USD "
 currency_symbol      "$"
 mon_decimal_point    ","
 mon_thousands_sep    "."
-mon_grouping         3;3
+mon_grouping         3
 positive_sign        ""
 negative_sign        "-"
 int_frac_digits      2
diff --git a/localedata/locales/es_ES b/localedata/locales/es_ES
index 86a8cd1069..ed8e88f830 100644
--- a/localedata/locales/es_ES
+++ b/localedata/locales/es_ES
@@ -122,7 +122,7 @@ int_curr_symbol      "EUR "
 currency_symbol      "€"
 mon_decimal_point    ","
 mon_thousands_sep    "."
-mon_grouping         3;3
+mon_grouping         3
 positive_sign        ""
 negative_sign        "-"
 int_frac_digits      2
@@ -138,7 +138,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point        ","
 thousands_sep        "."
-grouping             3;3
+grouping             3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/es_GT b/localedata/locales/es_GT
index ad931405d1..3853e27f5b 100644
--- a/localedata/locales/es_GT
+++ b/localedata/locales/es_GT
@@ -67,7 +67,7 @@ int_curr_symbol      "GTQ "
 currency_symbol      "Q"
 mon_decimal_point    "."
 mon_thousands_sep    ","
-mon_grouping         3;3
+mon_grouping         3
 positive_sign        ""
 negative_sign        "-"
 int_frac_digits      2
@@ -83,7 +83,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point        "."
 thousands_sep        ","
-grouping             3;3
+grouping             3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/es_HN b/localedata/locales/es_HN
index 96ee4c27e5..7066e8a997 100644
--- a/localedata/locales/es_HN
+++ b/localedata/locales/es_HN
@@ -67,7 +67,7 @@ int_curr_symbol      "HNL "
 currency_symbol      "L"
 mon_decimal_point    "."
 mon_thousands_sep    ","
-mon_grouping         3;3
+mon_grouping         3
 positive_sign        ""
 negative_sign        "-"
 int_frac_digits      2
@@ -83,7 +83,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point        "."
 thousands_sep        ","
-grouping             3;3
+grouping             3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/es_MX b/localedata/locales/es_MX
index c71c80b87d..ffdf5a0ac0 100644
--- a/localedata/locales/es_MX
+++ b/localedata/locales/es_MX
@@ -67,7 +67,7 @@ int_curr_symbol      "MXN "
 currency_symbol      "$"
 mon_decimal_point    "."
 mon_thousands_sep    ","
-mon_grouping         3;3
+mon_grouping         3
 positive_sign        ""
 negative_sign        "-"
 int_frac_digits      2
@@ -83,7 +83,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point        "."
 thousands_sep        " "
-grouping             3;3
+grouping             3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/es_NI b/localedata/locales/es_NI
index b0af629038..5c7031d57f 100644
--- a/localedata/locales/es_NI
+++ b/localedata/locales/es_NI
@@ -59,7 +59,7 @@ int_curr_symbol      "NIO "
 currency_symbol      "C$"
 mon_decimal_point    "."
 mon_thousands_sep    ","
-mon_grouping         3;3
+mon_grouping         3
 positive_sign        ""
 negative_sign        "-"
 int_frac_digits      2
@@ -75,7 +75,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point        "."
 thousands_sep        ","
-grouping             3;3
+grouping             3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/es_PA b/localedata/locales/es_PA
index 2140c21453..8de759763c 100644
--- a/localedata/locales/es_PA
+++ b/localedata/locales/es_PA
@@ -67,7 +67,7 @@ int_curr_symbol      "PAB "
 currency_symbol      "B//."
 mon_decimal_point    "."
 mon_thousands_sep    ","
-mon_grouping         3;3
+mon_grouping         3
 positive_sign        ""
 negative_sign        "-"
 int_frac_digits      2
@@ -83,7 +83,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point        "."
 thousands_sep        ","
-grouping             3;3
+grouping             3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/es_PE b/localedata/locales/es_PE
index b08b5af7e3..d72f436bc6 100644
--- a/localedata/locales/es_PE
+++ b/localedata/locales/es_PE
@@ -67,7 +67,7 @@ int_curr_symbol      "PEN "
 currency_symbol      "S//"
 mon_decimal_point    "."
 mon_thousands_sep    ","
-mon_grouping         3;3
+mon_grouping         3
 positive_sign        ""
 negative_sign        "-"
 int_frac_digits      2
diff --git a/localedata/locales/es_PR b/localedata/locales/es_PR
index 7d4e683f64..903de3cd7f 100644
--- a/localedata/locales/es_PR
+++ b/localedata/locales/es_PR
@@ -59,7 +59,7 @@ int_curr_symbol      "USD "
 currency_symbol      "$"
 mon_decimal_point    "."
 mon_thousands_sep    ","
-mon_grouping         3;3
+mon_grouping         3
 positive_sign        ""
 negative_sign        "-"
 int_frac_digits      2
@@ -75,7 +75,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point        "."
 thousands_sep        ","
-grouping             3;3
+grouping             3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/es_PY b/localedata/locales/es_PY
index 4482886a14..941003dc15 100644
--- a/localedata/locales/es_PY
+++ b/localedata/locales/es_PY
@@ -67,7 +67,7 @@ int_curr_symbol      "PYG "
 currency_symbol      "Gs."
 mon_decimal_point    ","
 mon_thousands_sep    "."
-mon_grouping         3;3
+mon_grouping         3
 positive_sign        ""
 negative_sign        "-"
 int_frac_digits      2
diff --git a/localedata/locales/es_SV b/localedata/locales/es_SV
index 5fb7a0589e..4029eeb711 100644
--- a/localedata/locales/es_SV
+++ b/localedata/locales/es_SV
@@ -67,7 +67,7 @@ int_curr_symbol      "USD "
 currency_symbol      "$"
 mon_decimal_point    "."
 mon_thousands_sep    ","
-mon_grouping         3;3
+mon_grouping         3
 positive_sign        ""
 negative_sign        "-"
 int_frac_digits      2
@@ -83,7 +83,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point        "."
 thousands_sep        ","
-grouping             3;3
+grouping             3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/es_US b/localedata/locales/es_US
index d79b700f28..da792b78f4 100644
--- a/localedata/locales/es_US
+++ b/localedata/locales/es_US
@@ -67,7 +67,7 @@ int_curr_symbol         "USD "
 currency_symbol         "$"
 mon_decimal_point       "."
 mon_thousands_sep       ","
-mon_grouping            3;3
+mon_grouping            3
 positive_sign           ""
 negative_sign           "-"
 int_frac_digits         2
diff --git a/localedata/locales/es_UY b/localedata/locales/es_UY
index 45c3aba74a..c21ec1a73d 100644
--- a/localedata/locales/es_UY
+++ b/localedata/locales/es_UY
@@ -67,7 +67,7 @@ int_curr_symbol      "UYU "
 currency_symbol      "$"
 mon_decimal_point    ","
 mon_thousands_sep    "."
-mon_grouping         3;3
+mon_grouping         3
 positive_sign        ""
 negative_sign        "-"
 int_frac_digits      2
diff --git a/localedata/locales/es_VE b/localedata/locales/es_VE
index c2cf3c734a..f9e6469d1d 100644
--- a/localedata/locales/es_VE
+++ b/localedata/locales/es_VE
@@ -68,7 +68,7 @@ int_curr_symbol      "VEF "
 currency_symbol      "Bs."
 mon_decimal_point    ","
 mon_thousands_sep    "."
-mon_grouping         3;3
+mon_grouping         3
 positive_sign        ""
 negative_sign        "-"
 int_frac_digits      2
diff --git a/localedata/locales/et_EE b/localedata/locales/et_EE
index 5789d5263d..eccca05ab0 100644
--- a/localedata/locales/et_EE
+++ b/localedata/locales/et_EE
@@ -121,7 +121,7 @@ int_curr_symbol     "EUR "
 currency_symbol     "€"
 mon_decimal_point   ","
 mon_thousands_sep   " "
-mon_grouping        3;3
+mon_grouping        3
 positive_sign       ""
 negative_sign       "-"
 int_frac_digits     2
@@ -137,7 +137,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point           ","
 thousands_sep           " "
-grouping                3;3
+grouping                3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/eu_ES b/localedata/locales/eu_ES
index a32c2437ea..d032d8bec9 100644
--- a/localedata/locales/eu_ES
+++ b/localedata/locales/eu_ES
@@ -74,7 +74,7 @@ int_curr_symbol      "EUR "
 currency_symbol      "€"
 mon_decimal_point    ","
 mon_thousands_sep    "."
-mon_grouping         3;3
+mon_grouping         3
 positive_sign        ""
 negative_sign        "-"
 int_frac_digits      2
@@ -90,7 +90,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point        ","
 thousands_sep        "."
-grouping             3;3
+grouping             3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/eu_ES@euro b/localedata/locales/eu_ES@euro
index 359c4fa993..ece7edc2f0 100644
--- a/localedata/locales/eu_ES@euro
+++ b/localedata/locales/eu_ES@euro
@@ -60,7 +60,7 @@ int_curr_symbol      "EUR "
 currency_symbol      "€"
 mon_decimal_point    ","
 mon_thousands_sep    "."
-mon_grouping         3;3
+mon_grouping         3
 positive_sign        ""
 negative_sign        "-"
 int_frac_digits      0
diff --git a/localedata/locales/fi_FI b/localedata/locales/fi_FI
index 8fbb5ddad0..2a63f90c1b 100644
--- a/localedata/locales/fi_FI
+++ b/localedata/locales/fi_FI
@@ -185,7 +185,7 @@ int_curr_symbol      "EUR "
 currency_symbol      "€"
 mon_decimal_point    ","
 mon_thousands_sep    " "
-mon_grouping         3;3
+mon_grouping         3
 positive_sign        ""
 negative_sign        "-"
 int_frac_digits      2
@@ -201,7 +201,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point        ","
 thousands_sep        " "
-grouping             3;3
+grouping             3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/fil_PH b/localedata/locales/fil_PH
index dca95ce46f..e4dc3e209a 100644
--- a/localedata/locales/fil_PH
+++ b/localedata/locales/fil_PH
@@ -95,7 +95,7 @@ int_curr_symbol         "PHP "
 currency_symbol         "₱"
 mon_decimal_point       "."
 mon_thousands_sep       ","
-mon_grouping            3;3
+mon_grouping            3
 positive_sign           ""
 negative_sign           "-"
 int_frac_digits         2
diff --git a/localedata/locales/fr_BE b/localedata/locales/fr_BE
index af222f76c2..f35a788a65 100644
--- a/localedata/locales/fr_BE
+++ b/localedata/locales/fr_BE
@@ -69,7 +69,7 @@ int_curr_symbol           "EUR "
 currency_symbol           "€"
 mon_decimal_point         ","
 mon_thousands_sep         "."
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
@@ -85,7 +85,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point             ","
 thousands_sep             "."
-grouping                  3;3
+grouping                  3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/fr_CA b/localedata/locales/fr_CA
index 4c3f05d98d..93cd0c4c88 100644
--- a/localedata/locales/fr_CA
+++ b/localedata/locales/fr_CA
@@ -68,7 +68,7 @@ int_curr_symbol           "CAD "
 currency_symbol           "$"
 mon_decimal_point         ","
 mon_thousands_sep         " "
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
diff --git a/localedata/locales/fr_LU b/localedata/locales/fr_LU
index 77272920f7..31af42f20a 100644
--- a/localedata/locales/fr_LU
+++ b/localedata/locales/fr_LU
@@ -69,7 +69,7 @@ int_curr_symbol           "EUR "
 currency_symbol           "€"
 mon_decimal_point         ","
 mon_thousands_sep         " "
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
@@ -85,7 +85,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point             ","
 thousands_sep             " "
-grouping                  3;3
+grouping                  3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/ga_IE b/localedata/locales/ga_IE
index 084a9bc11b..58b8dcfb8b 100644
--- a/localedata/locales/ga_IE
+++ b/localedata/locales/ga_IE
@@ -65,7 +65,7 @@ int_curr_symbol         "EUR "
 currency_symbol         "€"
 mon_decimal_point       "."
 mon_thousands_sep       ","
-mon_grouping            3;3
+mon_grouping            3
 positive_sign           ""
 negative_sign           "-"
 int_frac_digits         2
@@ -81,7 +81,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point           "."
 thousands_sep           ","
-grouping                3;3
+grouping                3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/gl_ES b/localedata/locales/gl_ES
index b98990db0e..d077a2a14e 100644
--- a/localedata/locales/gl_ES
+++ b/localedata/locales/gl_ES
@@ -70,7 +70,7 @@ int_curr_symbol      "EUR "
 currency_symbol      "€"
 mon_decimal_point    ","
 mon_thousands_sep    "."
-mon_grouping         3;3
+mon_grouping         3
 positive_sign        ""
 negative_sign        "-"
 int_frac_digits      2
@@ -86,7 +86,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point        ","
 thousands_sep        ""
-grouping             0;0
+grouping             -1
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/gv_GB b/localedata/locales/gv_GB
index f4ccaa08a4..cf3b8e1465 100644
--- a/localedata/locales/gv_GB
+++ b/localedata/locales/gv_GB
@@ -68,7 +68,7 @@ int_curr_symbol         "GBP "
 currency_symbol         "£"
 mon_decimal_point       "."
 mon_thousands_sep       ","
-mon_grouping            3;3
+mon_grouping            3
 positive_sign           ""
 negative_sign           "-"
 int_frac_digits         2
@@ -84,7 +84,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point           "."
 thousands_sep           ","
-grouping                3;3
+grouping                3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/he_IL b/localedata/locales/he_IL
index e49c06d922..7886e348f0 100644
--- a/localedata/locales/he_IL
+++ b/localedata/locales/he_IL
@@ -70,7 +70,7 @@ int_curr_symbol   "ILS "
 currency_symbol   "₪"
 mon_decimal_point "."
 mon_thousands_sep ","
-mon_grouping      3;3
+mon_grouping      3
 positive_sign     ""
 negative_sign     "-"
 int_frac_digits   2
@@ -86,7 +86,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point     "."
 thousands_sep     ","
-grouping          3;3
+grouping          3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/hr_HR b/localedata/locales/hr_HR
index 81d5424395..83087a3b02 100644
--- a/localedata/locales/hr_HR
+++ b/localedata/locales/hr_HR
@@ -175,7 +175,7 @@ int_curr_symbol           "HRK "
 currency_symbol           "kn"
 mon_decimal_point         ","
 mon_thousands_sep         "."
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
@@ -193,7 +193,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point             ","
 thousands_sep             "."
-grouping                  3;3
+grouping                  3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/hu_HU b/localedata/locales/hu_HU
index 4ffb33228d..b61e402a62 100644
--- a/localedata/locales/hu_HU
+++ b/localedata/locales/hu_HU
@@ -492,7 +492,7 @@ int_curr_symbol           "HUF "
 currency_symbol           "Ft"
 mon_decimal_point         ","
 mon_thousands_sep         "."
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
@@ -514,7 +514,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point             ","
 thousands_sep             "."
-grouping                  3;3
+grouping                  3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/hy_AM b/localedata/locales/hy_AM
index 6e798f08de..fd7ea763f7 100644
--- a/localedata/locales/hy_AM
+++ b/localedata/locales/hy_AM
@@ -83,7 +83,7 @@ int_curr_symbol      "AMD "
 currency_symbol      "֏"
 mon_decimal_point    "."
 mon_thousands_sep    ","
-mon_grouping         3;3
+mon_grouping         3
 positive_sign        ""
 negative_sign        "-"
 int_frac_digits      2
@@ -99,7 +99,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point        "."
 thousands_sep        ","
-grouping             3;3
+grouping             3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/id_ID b/localedata/locales/id_ID
index 17cb3c77ca..7a6cbb7d50 100644
--- a/localedata/locales/id_ID
+++ b/localedata/locales/id_ID
@@ -66,7 +66,7 @@ int_curr_symbol         "IDR "
 currency_symbol         "Rp"
 mon_decimal_point       ","
 mon_thousands_sep       "."
-mon_grouping            3;3
+mon_grouping            3
 positive_sign           ""
 negative_sign           "-"
 int_frac_digits         2
@@ -82,7 +82,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point           ","
 thousands_sep           "."
-grouping                3;3
+grouping                3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/is_IS b/localedata/locales/is_IS
index 8d9218eca1..f3e35c7486 100644
--- a/localedata/locales/is_IS
+++ b/localedata/locales/is_IS
@@ -157,7 +157,7 @@ int_curr_symbol         "ISK "
 currency_symbol         "kr"
 mon_decimal_point       ","
 mon_thousands_sep       "."
-mon_grouping            3;3
+mon_grouping            3
 positive_sign           ""
 negative_sign           "-"
 % *_frac_* must be checked
@@ -174,7 +174,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point           ","
 thousands_sep           "."
-grouping                3;3
+grouping                3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/it_IT b/localedata/locales/it_IT
index 1b7a9538d2..f2a464ca45 100644
--- a/localedata/locales/it_IT
+++ b/localedata/locales/it_IT
@@ -73,7 +73,7 @@ int_curr_symbol           "EUR "
 currency_symbol           "€"
 mon_decimal_point         ","
 mon_thousands_sep         "."
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
@@ -89,7 +89,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point             ","
 thousands_sep             "."
-grouping                  3;3
+grouping                  3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/ka_GE b/localedata/locales/ka_GE
index ce23443f60..09a5768f6a 100644
--- a/localedata/locales/ka_GE
+++ b/localedata/locales/ka_GE
@@ -63,7 +63,7 @@ int_curr_symbol      "GEL "
 currency_symbol      "₾"
 mon_decimal_point    ","
 mon_thousands_sep    "."
-mon_grouping         3;3
+mon_grouping         3
 positive_sign        ""
 negative_sign        "-"
 int_frac_digits      2
@@ -79,7 +79,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point        ","
 thousands_sep        "."
-grouping             3;3
+grouping             3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/kk_KZ b/localedata/locales/kk_KZ
index 42f31f97d7..81e1475008 100644
--- a/localedata/locales/kk_KZ
+++ b/localedata/locales/kk_KZ
@@ -114,7 +114,7 @@ int_curr_symbol           "KZT "
 currency_symbol           "₸"
 mon_decimal_point         ","
 mon_thousands_sep         " "
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
@@ -136,7 +136,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point             ","
 thousands_sep             " "
-grouping                  3;3
+grouping                  3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/km_KH b/localedata/locales/km_KH
index a9b697fa40..a4216ca689 100644
--- a/localedata/locales/km_KH
+++ b/localedata/locales/km_KH
@@ -892,7 +892,7 @@ int_curr_symbol      "KHR "
 currency_symbol      "៛"
 mon_decimal_point    "."
 mon_thousands_sep    ","
-mon_grouping         3;3
+mon_grouping         3
 positive_sign        ""
 negative_sign        "-"
 int_frac_digits       2
diff --git a/localedata/locales/ko_KR b/localedata/locales/ko_KR
index b8c328bb83..38235ebf08 100644
--- a/localedata/locales/ko_KR
+++ b/localedata/locales/ko_KR
@@ -6109,7 +6109,7 @@ int_curr_symbol		"KRW "
 currency_symbol		"₩"
 mon_decimal_point	"."
 mon_thousands_sep	","
-mon_grouping		3;3
+mon_grouping		3
 positive_sign		""
 negative_sign		"-"
 int_frac_digits		0
@@ -6132,7 +6132,7 @@ LC_NUMERIC
 
 decimal_point		"."
 thousands_sep		","
-grouping		3;3
+grouping		3
 
 END LC_NUMERIC
 
diff --git a/localedata/locales/kv_RU b/localedata/locales/kv_RU
index 51d0cb3f73..e821d680ba 100644
--- a/localedata/locales/kv_RU
+++ b/localedata/locales/kv_RU
@@ -56,7 +56,7 @@ int_curr_symbol           "RUB "
 currency_symbol           "₽"
 mon_decimal_point         "."
 mon_thousands_sep         " "
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
diff --git a/localedata/locales/kw_GB b/localedata/locales/kw_GB
index e56117394a..07771fa16e 100644
--- a/localedata/locales/kw_GB
+++ b/localedata/locales/kw_GB
@@ -69,7 +69,7 @@ int_curr_symbol         "GBP "
 currency_symbol         "£"
 mon_decimal_point       "."
 mon_thousands_sep       ","
-mon_grouping            3;3
+mon_grouping            3
 positive_sign           ""
 negative_sign           "-"
 int_frac_digits         2
@@ -85,7 +85,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point           "."
 thousands_sep           ","
-grouping                3;3
+grouping                3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/ky_KG b/localedata/locales/ky_KG
index 771a612306..3eb6cf5094 100644
--- a/localedata/locales/ky_KG
+++ b/localedata/locales/ky_KG
@@ -98,7 +98,7 @@ int_curr_symbol           "KGS "
 currency_symbol           "сом"
 mon_decimal_point         "."
 mon_thousands_sep         " "
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
@@ -114,7 +114,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point             ","
 thousands_sep             " "
-grouping                  3;3
+grouping                  3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/lg_UG b/localedata/locales/lg_UG
index 844e95db8f..fe48cf082f 100644
--- a/localedata/locales/lg_UG
+++ b/localedata/locales/lg_UG
@@ -73,7 +73,7 @@ currency_symbol         "USh"
 %
 mon_decimal_point       "."
 mon_thousands_sep       ","
-mon_grouping            3;3
+mon_grouping            3
 % For money there are three numbers to the between each
 % pair of thousands separators, e.g. "123,456,786"
 %
@@ -124,7 +124,7 @@ decimal_point           "."
 thousands_sep           ","
 % For normal numbers, the thousands separator is a ","
 %
-grouping                3;3
+grouping                3
 % For normal numbers, there are three numbers between each
 % pair of thousands separators, e.g. 123,456,789
 %
diff --git a/localedata/locales/lo_LA b/localedata/locales/lo_LA
index b777889467..2a94d4ada3 100644
--- a/localedata/locales/lo_LA
+++ b/localedata/locales/lo_LA
@@ -616,7 +616,7 @@ int_curr_symbol      "LAK "
 currency_symbol      "₭"
 mon_decimal_point    "."
 mon_thousands_sep    ","
-mon_grouping         3;3
+mon_grouping         3
 positive_sign        ""
 negative_sign        "-"
 int_frac_digits      2
diff --git a/localedata/locales/lt_LT b/localedata/locales/lt_LT
index 035682097a..1ec060162d 100644
--- a/localedata/locales/lt_LT
+++ b/localedata/locales/lt_LT
@@ -171,7 +171,7 @@ int_curr_symbol     "EUR "
 currency_symbol     "€"
 mon_decimal_point   ","
 mon_thousands_sep   "."
-mon_grouping        3;3
+mon_grouping        3
 positive_sign       ""
 negative_sign       "-"
 int_frac_digits     2
@@ -187,7 +187,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point       ","
 thousands_sep       "."
-grouping            3;3
+grouping            3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/lv_LV b/localedata/locales/lv_LV
index 576a1ca56d..32b3ddaaeb 100644
--- a/localedata/locales/lv_LV
+++ b/localedata/locales/lv_LV
@@ -133,7 +133,7 @@ int_curr_symbol   "EUR "
 currency_symbol   "€"
 mon_decimal_point ","
 mon_thousands_sep " "
-mon_grouping      3;3
+mon_grouping      3
 positive_sign     ""
 negative_sign     "-"
 int_frac_digits   2
@@ -149,7 +149,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point     ","
 thousands_sep     " "
-grouping          3;3
+grouping          3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/mfe_MU b/localedata/locales/mfe_MU
index acd0cc881e..ddb7e71b56 100644
--- a/localedata/locales/mfe_MU
+++ b/localedata/locales/mfe_MU
@@ -118,7 +118,7 @@ int_curr_symbol     "MUR "
 currency_symbol     "₨"
 mon_decimal_point   "."
 mon_thousands_sep   " "
-mon_grouping        3;3
+mon_grouping        3
 positive_sign       ""
 negative_sign       "-"
 int_frac_digits     2
diff --git a/localedata/locales/mg_MG b/localedata/locales/mg_MG
index 1b0106aeac..214d1008bc 100644
--- a/localedata/locales/mg_MG
+++ b/localedata/locales/mg_MG
@@ -75,7 +75,7 @@ int_curr_symbol           "MGA "
 currency_symbol           "Ar"
 mon_decimal_point         ","
 mon_thousands_sep         " "
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
@@ -91,7 +91,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point             ","
 thousands_sep             ""
-grouping                  0;0
+grouping                  -1
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/mhr_RU b/localedata/locales/mhr_RU
index 6b1a47e574..3ed14ecc51 100644
--- a/localedata/locales/mhr_RU
+++ b/localedata/locales/mhr_RU
@@ -71,7 +71,7 @@ int_curr_symbol           "RUB "
 currency_symbol           "₽"
 mon_decimal_point         "."
 mon_thousands_sep         " "
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
diff --git a/localedata/locales/mk_MK b/localedata/locales/mk_MK
index f7bc9d3349..5f3c76ee17 100644
--- a/localedata/locales/mk_MK
+++ b/localedata/locales/mk_MK
@@ -96,7 +96,7 @@ int_curr_symbol           "MKD "
 currency_symbol           "ден"
 mon_decimal_point         ","
 mon_thousands_sep         " "
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
@@ -112,7 +112,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point             ","
 thousands_sep             " "
-grouping                  3;3
+grouping                  3
 END LC_NUMERIC
 
 LC_MESSAGES
diff --git a/localedata/locales/mn_MN b/localedata/locales/mn_MN
index cfe0473f68..0e93021751 100644
--- a/localedata/locales/mn_MN
+++ b/localedata/locales/mn_MN
@@ -138,7 +138,7 @@ int_curr_symbol     "MNT "
 currency_symbol     "₮"
 mon_decimal_point   "."
 mon_thousands_sep   " "
-mon_grouping        3;3
+mon_grouping        3
 positive_sign       ""
 negative_sign       "-"
 int_frac_digits     2
@@ -155,7 +155,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point   ","
 thousands_sep   "."
-grouping        3;3
+grouping        3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/my_MM b/localedata/locales/my_MM
index 733e6c98c1..d59fb6ed66 100644
--- a/localedata/locales/my_MM
+++ b/localedata/locales/my_MM
@@ -76,7 +76,7 @@ int_curr_symbol     "MMK "
 currency_symbol "K"
 mon_decimal_point     "."
 mon_thousands_sep     ","
-mon_grouping          3;3
+mon_grouping          3
 positive_sign         ""
 negative_sign         "-"
 int_frac_digits       2
@@ -98,7 +98,7 @@ LC_NUMERIC
 %
 decimal_point          "."
 thousands_sep          ","
-grouping               3;3
+grouping               3
 %
 END LC_NUMERIC
 
diff --git a/localedata/locales/nb_NO b/localedata/locales/nb_NO
index f2976fe36f..bb91230556 100644
--- a/localedata/locales/nb_NO
+++ b/localedata/locales/nb_NO
@@ -174,7 +174,7 @@ int_curr_symbol         "NOK "
 currency_symbol         "kr"
 mon_decimal_point       ","
 mon_thousands_sep       " "
-mon_grouping            3;3
+mon_grouping            3
 positive_sign           ""
 negative_sign           "-"
 int_frac_digits         2
@@ -190,7 +190,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point           ","
 thousands_sep           " "
-grouping                3;3
+grouping                3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/nl_AW b/localedata/locales/nl_AW
index 3bf50aa1cf..894642c825 100644
--- a/localedata/locales/nl_AW
+++ b/localedata/locales/nl_AW
@@ -50,7 +50,7 @@ int_curr_symbol     "AWG "
 currency_symbol     "Afl."
 mon_decimal_point   ","
 mon_thousands_sep   "."
-mon_grouping        3;3
+mon_grouping        3
 positive_sign       ""
 negative_sign       "-"
 int_frac_digits     2
diff --git a/localedata/locales/nl_NL b/localedata/locales/nl_NL
index 9e3bbf0c93..94f7477fc6 100644
--- a/localedata/locales/nl_NL
+++ b/localedata/locales/nl_NL
@@ -75,7 +75,7 @@ int_curr_symbol           "EUR "
 currency_symbol           "€"
 mon_decimal_point         ","
 mon_thousands_sep         "."
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
@@ -91,7 +91,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point             ","
 thousands_sep             "."
-grouping                  3;3
+grouping                  3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/om_KE b/localedata/locales/om_KE
index 49731530ac..886725b4da 100644
--- a/localedata/locales/om_KE
+++ b/localedata/locales/om_KE
@@ -177,7 +177,7 @@ int_curr_symbol       "KES "
 currency_symbol       "Ksh"
 mon_decimal_point     "."
 mon_thousands_sep     ","
-mon_grouping          3;3
+mon_grouping          3
 positive_sign         ""
 negative_sign         "-"
 int_frac_digits       2
@@ -198,7 +198,7 @@ LC_NUMERIC
 %
 decimal_point          "."
 thousands_sep          ","
-grouping               3;3
+grouping               3
 %
 END LC_NUMERIC
 
diff --git a/localedata/locales/pap_AW b/localedata/locales/pap_AW
index 0072083146..6819b87dab 100644
--- a/localedata/locales/pap_AW
+++ b/localedata/locales/pap_AW
@@ -78,7 +78,7 @@ int_curr_symbol           "AWG "
 currency_symbol           "ƒ"
 mon_decimal_point         ","
 mon_thousands_sep         " "
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
@@ -133,7 +133,7 @@ END LC_TIME
 LC_NUMERIC
 decimal_point             ","
 thousands_sep             ""
-grouping                  0;0
+grouping                  -1
 END LC_NUMERIC
 
 LC_MEASUREMENT
diff --git a/localedata/locales/pap_CW b/localedata/locales/pap_CW
index c7ab047a46..0dc21247d4 100644
--- a/localedata/locales/pap_CW
+++ b/localedata/locales/pap_CW
@@ -78,7 +78,7 @@ int_curr_symbol           "ANG "
 currency_symbol           "ƒ"
 mon_decimal_point         ","
 mon_thousands_sep         " "
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
@@ -133,7 +133,7 @@ END LC_TIME
 LC_NUMERIC
 decimal_point             ","
 thousands_sep             ""
-grouping                  0;0
+grouping                  -1
 END LC_NUMERIC
 
 LC_MEASUREMENT
diff --git a/localedata/locales/pt_BR b/localedata/locales/pt_BR
index c338c7a794..d9667b187a 100644
--- a/localedata/locales/pt_BR
+++ b/localedata/locales/pt_BR
@@ -65,7 +65,7 @@ int_curr_symbol           "BRL "
 currency_symbol           "R$"
 mon_decimal_point         ","
 mon_thousands_sep         "."
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
@@ -85,7 +85,7 @@ END LC_CTYPE
 LC_NUMERIC
 decimal_point             ","
 thousands_sep             "."
-grouping                  3;3
+grouping                  3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/pt_PT b/localedata/locales/pt_PT
index e1b72ba06a..4e4b8f2b13 100644
--- a/localedata/locales/pt_PT
+++ b/localedata/locales/pt_PT
@@ -73,7 +73,7 @@ int_curr_symbol           "EUR "
 currency_symbol           "€"
 mon_decimal_point         ","
 mon_thousands_sep         "."
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
@@ -89,7 +89,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point             ","
 thousands_sep             ""
-grouping                  0;0
+grouping                  -1
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/rif_MA b/localedata/locales/rif_MA
index dff34470b3..17671fe164 100644
--- a/localedata/locales/rif_MA
+++ b/localedata/locales/rif_MA
@@ -109,7 +109,7 @@ int_curr_symbol         "MAD "
 currency_symbol         "dh"
 mon_decimal_point       "."
 mon_thousands_sep       ""
-mon_grouping            3;3
+mon_grouping            3
 positive_sign           ""
 negative_sign           "-"
 int_frac_digits         2
diff --git a/localedata/locales/ro_RO b/localedata/locales/ro_RO
index 2b6705ccf4..9788290deb 100644
--- a/localedata/locales/ro_RO
+++ b/localedata/locales/ro_RO
@@ -166,7 +166,7 @@ mon_decimal_point         ","
 % the separation of digits is made in groups of three
 % and the separator between the groups is the full stop (dot)
 mon_thousands_sep         "."
-mon_grouping              3;3
+mon_grouping              3
 % the positive sign is not usualy represented
 positive_sign             ""
 % while the negative one is
@@ -190,7 +190,7 @@ decimal_point             ","
 % and the separator between groups is full stop
 thousands_sep             "."
 % the separation of figures is made in groups of three
-grouping                  3;3
+grouping                  3
 END LC_NUMERIC
 
 
diff --git a/localedata/locales/ru_RU b/localedata/locales/ru_RU
index c9e8a3b3b2..b6268a242a 100644
--- a/localedata/locales/ru_RU
+++ b/localedata/locales/ru_RU
@@ -84,7 +84,7 @@ int_curr_symbol           "RUB "
 currency_symbol           "₽"
 mon_decimal_point         ","
 mon_thousands_sep         " "
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
@@ -100,7 +100,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point             ","
 thousands_sep             " "
-grouping                  3;3
+grouping                  3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/ru_UA b/localedata/locales/ru_UA
index 278f36c625..ee5ec9d74a 100644
--- a/localedata/locales/ru_UA
+++ b/localedata/locales/ru_UA
@@ -63,7 +63,7 @@ int_curr_symbol           "UAH "
 currency_symbol           "₴"
 mon_decimal_point         "."
 mon_thousands_sep         " "
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
@@ -79,7 +79,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point             ","
 thousands_sep             "."
-grouping                  3;3
+grouping                  3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/rw_RW b/localedata/locales/rw_RW
index 85f26ca6c4..fce8a6a90d 100644
--- a/localedata/locales/rw_RW
+++ b/localedata/locales/rw_RW
@@ -56,7 +56,7 @@ int_curr_symbol           "RWF "
 currency_symbol           "FRw"
 mon_decimal_point         ","
 mon_thousands_sep         "."
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
diff --git a/localedata/locales/se_NO b/localedata/locales/se_NO
index 6587d7603b..e9a784f4a8 100644
--- a/localedata/locales/se_NO
+++ b/localedata/locales/se_NO
@@ -229,7 +229,7 @@ int_curr_symbol         "NOK "
 currency_symbol         "kr"
 mon_decimal_point       ","
 mon_thousands_sep       "."
-mon_grouping            3;3
+mon_grouping            3
 positive_sign           ""
 negative_sign           "-"
 int_frac_digits         2
@@ -245,7 +245,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point           ","
 thousands_sep           "."
-grouping                3;3
+grouping                3
 END LC_NUMERIC
 
 
diff --git a/localedata/locales/shn_MM b/localedata/locales/shn_MM
index 164c970f10..92d694321d 100644
--- a/localedata/locales/shn_MM
+++ b/localedata/locales/shn_MM
@@ -72,7 +72,7 @@ int_curr_symbol       "MMK "
 currency_symbol       "Ks"
 mon_decimal_point     "."
 mon_thousands_sep     ","
-mon_grouping          3;3
+mon_grouping          3
 positive_sign         ""
 negative_sign         "-"
 int_frac_digits       2
@@ -88,7 +88,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point          "."
 thousands_sep          ","
-grouping               3;3
+grouping               3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/sk_SK b/localedata/locales/sk_SK
index 3421382b5c..658ac2c1f8 100644
--- a/localedata/locales/sk_SK
+++ b/localedata/locales/sk_SK
@@ -92,7 +92,7 @@ int_curr_symbol		"EUR "
 currency_symbol		"€"
 mon_decimal_point	","
 mon_thousands_sep	" "
-mon_grouping      	3;3
+mon_grouping      	3
 positive_sign		""
 negative_sign		"-"
 int_frac_digits		2
@@ -113,7 +113,7 @@ LC_NUMERIC
 
 decimal_point		","
 thousands_sep		" "
-grouping		3;3
+grouping		3
 
 END LC_NUMERIC
 
diff --git a/localedata/locales/sl_SI b/localedata/locales/sl_SI
index ae44b38b11..ca65ab92e4 100644
--- a/localedata/locales/sl_SI
+++ b/localedata/locales/sl_SI
@@ -2135,7 +2135,7 @@ int_curr_symbol           "EUR "
 currency_symbol           "€"
 mon_decimal_point         ","
 mon_thousands_sep         "."
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
@@ -2151,7 +2151,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point             ","
 thousands_sep             "."
-grouping                  0;0
+grouping                  -1
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/so_SO b/localedata/locales/so_SO
index a695a29634..799b8495d7 100644
--- a/localedata/locales/so_SO
+++ b/localedata/locales/so_SO
@@ -82,7 +82,7 @@ int_curr_symbol       "SOS "
 currency_symbol       "S"
 mon_decimal_point     "."
 mon_thousands_sep     ","
-mon_grouping          3;3
+mon_grouping          3
 positive_sign         ""
 negative_sign         "-"
 int_frac_digits       2
@@ -103,7 +103,7 @@ LC_NUMERIC
 %
 decimal_point          "."
 thousands_sep          ","
-grouping               3;3
+grouping               3
 %
 END LC_NUMERIC
 
diff --git a/localedata/locales/sq_MK b/localedata/locales/sq_MK
index 9415d5f172..6996fdaa4b 100644
--- a/localedata/locales/sq_MK
+++ b/localedata/locales/sq_MK
@@ -54,7 +54,7 @@ int_curr_symbol           "MKD "
 currency_symbol           "den"
 mon_decimal_point         ","
 mon_thousands_sep         " "
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
diff --git a/localedata/locales/sr_ME b/localedata/locales/sr_ME
index 38121e8cc1..0803c01cea 100644
--- a/localedata/locales/sr_ME
+++ b/localedata/locales/sr_ME
@@ -63,7 +63,7 @@ int_curr_symbol           "EUR "
 currency_symbol           "€"
 mon_decimal_point         ","
 mon_thousands_sep         "."
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
diff --git a/localedata/locales/sr_RS b/localedata/locales/sr_RS
index 93222c2e0c..33714f0816 100644
--- a/localedata/locales/sr_RS
+++ b/localedata/locales/sr_RS
@@ -152,7 +152,7 @@ int_curr_symbol           "RSD "
 currency_symbol           "дин"
 mon_decimal_point         ","
 mon_thousands_sep         "."
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
@@ -168,7 +168,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point             ","
 thousands_sep             ""
-grouping                  0;0
+grouping                  -1
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/sr_RS@latin b/localedata/locales/sr_RS@latin
index 316ded88e9..d32c17869d 100644
--- a/localedata/locales/sr_RS@latin
+++ b/localedata/locales/sr_RS@latin
@@ -63,7 +63,7 @@ int_curr_symbol           "RSD "
 currency_symbol           "din"
 mon_decimal_point         ","
 mon_thousands_sep         "."
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           0
diff --git a/localedata/locales/su_ID b/localedata/locales/su_ID
index 588eb1d901..902f520a73 100644
--- a/localedata/locales/su_ID
+++ b/localedata/locales/su_ID
@@ -66,7 +66,7 @@ int_curr_symbol         "IDR "
 currency_symbol         "Rp"
 mon_decimal_point       ","
 mon_thousands_sep       "."
-mon_grouping            3;3
+mon_grouping            3
 positive_sign           ""
 negative_sign           "-"
 int_frac_digits         2
@@ -82,7 +82,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point           ","
 thousands_sep           "."
-grouping                3;3
+grouping                3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/sv_SE b/localedata/locales/sv_SE
index d8e3c7f6bc..3d2df9c303 100644
--- a/localedata/locales/sv_SE
+++ b/localedata/locales/sv_SE
@@ -173,7 +173,7 @@ int_curr_symbol         "SEK "
 currency_symbol         "kr"
 mon_decimal_point       ","
 mon_thousands_sep       " "
-mon_grouping            3;3
+mon_grouping            3
 positive_sign           ""
 negative_sign           "-"
 int_frac_digits         2
@@ -189,7 +189,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point           ","
 thousands_sep           " "
-grouping                3;3
+grouping                3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/tg_TJ b/localedata/locales/tg_TJ
index 56105d48a8..a510daf11b 100644
--- a/localedata/locales/tg_TJ
+++ b/localedata/locales/tg_TJ
@@ -133,7 +133,7 @@ int_curr_symbol           "TJS "
 currency_symbol           "руб"
 mon_decimal_point         "."
 mon_thousands_sep         " "
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
@@ -149,7 +149,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point             ","
 thousands_sep             "."
-grouping                  3;3
+grouping                  3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/ti_ER b/localedata/locales/ti_ER
index 833dd4586b..a0d4ed4c90 100644
--- a/localedata/locales/ti_ER
+++ b/localedata/locales/ti_ER
@@ -78,7 +78,7 @@ int_curr_symbol       "ERN "
 currency_symbol       "Nfk"
 mon_decimal_point     "."
 mon_thousands_sep     ","
-mon_grouping          3;3
+mon_grouping          3
 positive_sign         ""
 negative_sign         "-"
 int_frac_digits       0
@@ -99,7 +99,7 @@ LC_NUMERIC
 %
 decimal_point         "."
 thousands_sep         ""
-grouping              0;0
+grouping              -1
 %
 END LC_NUMERIC
 
diff --git a/localedata/locales/tk_TM b/localedata/locales/tk_TM
index 0b24123575..26f34b5cbc 100644
--- a/localedata/locales/tk_TM
+++ b/localedata/locales/tk_TM
@@ -336,7 +336,7 @@ END LC_TIME
 LC_NUMERIC
 decimal_point             "."
 thousands_sep             ","
-grouping                  3;3
+grouping                  3
 END LC_NUMERIC
 
 LC_MONETARY
@@ -344,7 +344,7 @@ int_curr_symbol           "TMM "
 currency_symbol           "MANAT"
 mon_decimal_point         "."
 mon_thousands_sep         ","
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
diff --git a/localedata/locales/tl_PH b/localedata/locales/tl_PH
index 8fc72cded9..f459bfc55e 100644
--- a/localedata/locales/tl_PH
+++ b/localedata/locales/tl_PH
@@ -57,7 +57,7 @@ int_curr_symbol         "PHP "
 currency_symbol         "₱"
 mon_decimal_point       "."
 mon_thousands_sep       ","
-mon_grouping            3;3
+mon_grouping            3
 positive_sign           ""
 negative_sign           "-"
 int_frac_digits         2
diff --git a/localedata/locales/tok b/localedata/locales/tok
index c67a553f84..d9a092cbb2 100644
--- a/localedata/locales/tok
+++ b/localedata/locales/tok
@@ -65,7 +65,7 @@ int_curr_symbol     "XDR "
 currency_symbol     "¤"
 mon_decimal_point   ","
 mon_thousands_sep   " "
-mon_grouping        3;3
+mon_grouping        3
 positive_sign       ""
 negative_sign       "-"
 int_frac_digits     2
@@ -81,7 +81,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point "."
 thousands_sep " "
-grouping      0;0
+grouping      -1
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/tr_TR b/localedata/locales/tr_TR
index 702b898d95..31387c7c4a 100644
--- a/localedata/locales/tr_TR
+++ b/localedata/locales/tr_TR
@@ -2742,7 +2742,7 @@ int_curr_symbol           "TRY "
 currency_symbol           "₺"
 mon_decimal_point         ","
 mon_thousands_sep         "."
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
@@ -2758,7 +2758,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point             ","
 thousands_sep             "."
-grouping                  3;3
+grouping                  3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/tt_RU b/localedata/locales/tt_RU
index 47562f554b..150a9bae2b 100644
--- a/localedata/locales/tt_RU
+++ b/localedata/locales/tt_RU
@@ -174,7 +174,7 @@ int_curr_symbol           "RUB "
 currency_symbol           "₽"
 mon_decimal_point         "."
 mon_thousands_sep         " "
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
diff --git a/localedata/locales/tt_RU@iqtelif b/localedata/locales/tt_RU@iqtelif
index 6d1d4a91c7..cd01731a3e 100644
--- a/localedata/locales/tt_RU@iqtelif
+++ b/localedata/locales/tt_RU@iqtelif
@@ -77,7 +77,7 @@ int_curr_symbol           "RUB "
 currency_symbol           "₽"
 mon_decimal_point         "."
 mon_thousands_sep         " "
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
@@ -93,7 +93,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point             ","
 thousands_sep             "."
-grouping                  3;3
+grouping                  3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/uk_UA b/localedata/locales/uk_UA
index bf8874ddce..66bc132e24 100644
--- a/localedata/locales/uk_UA
+++ b/localedata/locales/uk_UA
@@ -626,7 +626,7 @@ mon_thousands_sep         " " % <NNBSP> (0X202F)
 % FIXME:
 %   Note difference between "123 456 789,01" and "1234,56".
 %   Unfortunately, it can't be implemented with current (2.3.6) glibc.
-mon_grouping              3;3
+mon_grouping              3
 
 % String that is used to indicate a positive sign for monetary
 % quantities
@@ -750,7 +750,7 @@ thousands_sep             " " % <NNBSP> (0X202F)
 % FIXME:
 %   Note difference between "123 456 789,01" and "1234,56".
 %   Unfortunately, it can't be implemented with current glibc.
-grouping                  3;3
+grouping                  3
 
 END LC_NUMERIC
 
diff --git a/localedata/locales/ur_PK b/localedata/locales/ur_PK
index a68fcef3c1..d87f4affa7 100644
--- a/localedata/locales/ur_PK
+++ b/localedata/locales/ur_PK
@@ -70,7 +70,7 @@ int_curr_symbol "PKR "
 currency_symbol "Rs"
 mon_decimal_point "."
 mon_thousands_sep ","
-mon_grouping  3;3
+mon_grouping  3
 positive_sign ""
 negative_sign "-"
 int_frac_digits 2
@@ -86,7 +86,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point "."
 thousands_sep ","
-grouping 3;3
+grouping 3
 END LC_NUMERIC
 
 % Since their is no abbreviated version of the days in urdu I have used the
diff --git a/localedata/locales/uz_UZ b/localedata/locales/uz_UZ
index 20fc7d10ad..66d0367148 100644
--- a/localedata/locales/uz_UZ
+++ b/localedata/locales/uz_UZ
@@ -251,7 +251,7 @@ int_curr_symbol         "UZS "
 currency_symbol         "soʻm"
 mon_decimal_point       "."
 mon_thousands_sep       ","
-mon_grouping            3;3
+mon_grouping            3
 positive_sign           ""
 negative_sign           "-"
 int_frac_digits         2
@@ -267,7 +267,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point           ","
 thousands_sep           " "
-grouping                3;3
+grouping                3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/uz_UZ@cyrillic b/localedata/locales/uz_UZ@cyrillic
index dbc8d405c2..483716dccb 100644
--- a/localedata/locales/uz_UZ@cyrillic
+++ b/localedata/locales/uz_UZ@cyrillic
@@ -158,7 +158,7 @@ int_curr_symbol         "UZS "
 currency_symbol         "сўм"
 mon_decimal_point       "."
 mon_thousands_sep       ","
-mon_grouping            3;3
+mon_grouping            3
 positive_sign           ""
 negative_sign           "-"
 int_frac_digits         2
@@ -174,7 +174,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point           ","
 thousands_sep           " "
-grouping                3;3
+grouping                3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/vi_VN b/localedata/locales/vi_VN
index 50cb9b2fd5..3e518ca3dc 100644
--- a/localedata/locales/vi_VN
+++ b/localedata/locales/vi_VN
@@ -156,7 +156,7 @@ int_curr_symbol       "VND "
 currency_symbol       "₫"
 mon_decimal_point     ","
 mon_thousands_sep     "."
-mon_grouping          3;3
+mon_grouping          3
 positive_sign         ""
 negative_sign         "-"
 int_frac_digits       0
@@ -172,7 +172,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point        ","
 thousands_sep        "."
-grouping             3;3
+grouping             3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/wo_SN b/localedata/locales/wo_SN
index 2527efdae6..c6f8e71151 100644
--- a/localedata/locales/wo_SN
+++ b/localedata/locales/wo_SN
@@ -75,7 +75,7 @@ int_curr_symbol           "XOF "
 currency_symbol           "CFA"
 mon_decimal_point         ","
 mon_thousands_sep         " "
-mon_grouping              3;3
+mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
 int_frac_digits           2
@@ -91,7 +91,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point             ","
 thousands_sep             ""
-grouping                  0;0
+grouping                  -1
 END LC_NUMERIC
 
 LC_TIME
diff --git a/localedata/locales/yi_US b/localedata/locales/yi_US
index 0ae5fc26cf..b4fa6d9ab0 100644
--- a/localedata/locales/yi_US
+++ b/localedata/locales/yi_US
@@ -170,7 +170,7 @@ int_curr_symbol   "USD "
 currency_symbol   "$"
 mon_decimal_point "."
 mon_thousands_sep ","
-mon_grouping      3;3
+mon_grouping      3
 positive_sign     ""
 negative_sign     "-"
 int_frac_digits   2
diff --git a/localedata/locales/yuw_PG b/localedata/locales/yuw_PG
index 561f1b09f6..962fb2b453 100644
--- a/localedata/locales/yuw_PG
+++ b/localedata/locales/yuw_PG
@@ -53,7 +53,7 @@ int_curr_symbol         "PGK "
 currency_symbol         "K"
 mon_decimal_point       "."
 mon_thousands_sep       ","
-mon_grouping            3;3
+mon_grouping            3
 positive_sign           ""
 negative_sign           "-"
 int_frac_digits         2
@@ -69,7 +69,7 @@ END LC_MONETARY
 LC_NUMERIC
 decimal_point           "."
 thousands_sep           ","
-grouping                3;3
+grouping                3
 END LC_NUMERIC
 
 LC_TIME
diff --git a/stdio-common/Makefile b/stdio-common/Makefile
index a8959c14e4..4dd789845e 100644
--- a/stdio-common/Makefile
+++ b/stdio-common/Makefile
@@ -367,6 +367,9 @@ LOCALES := \
   ja_JP.EUC-JP \
   ps_AF.UTF-8 \
   tg_TJ.UTF-8 \
+  bn_BD.UTF-8 \
+  unm_US.UTF-8 \
+  rw_RW.UTF-8 \
   # LOCALES
 include ../gen-locales.mk
 
diff --git a/stdio-common/tst-grouping_iterator.c b/stdio-common/tst-grouping_iterator.c
index 79cc9f4e7a..7aaf428d48 100644
--- a/stdio-common/tst-grouping_iterator.c
+++ b/stdio-common/tst-grouping_iterator.c
@@ -181,13 +181,13 @@ do_test (void)
   TEST_COMPARE (it.remaining_in_current_group, 2);
   TEST_COMPARE (it.remaining, 8);
   TEST_COMPARE (*it.groupings, 3);
-  TEST_COMPARE (it.non_repeating_groups, 3); /* Locale duplicates 3.  */
+  TEST_COMPARE (it.non_repeating_groups, 0);
   TEST_COMPARE (it.separators, 2);
   TEST_COMPARE (__grouping_iterator_init (&it, LC_MONETARY, loc, 8), true);
   TEST_COMPARE (it.remaining_in_current_group, 2);
   TEST_COMPARE (it.remaining, 8);
   TEST_COMPARE (*it.groupings, 3);
-  TEST_COMPARE (it.non_repeating_groups, 3); /* Locale duplicates 3.  */
+  TEST_COMPARE (it.non_repeating_groups, 0);
   TEST_COMPARE (it.separators, 2);
   freelocale (loc);
 
@@ -202,13 +202,13 @@ do_test (void)
   TEST_COMPARE (it.remaining_in_current_group, 2);
   TEST_COMPARE (it.remaining, 8);
   TEST_COMPARE (*it.groupings, 3);
-  TEST_COMPARE (it.non_repeating_groups, 3); /* Locale duplicates 3.  */
+  TEST_COMPARE (it.non_repeating_groups, 0);
   TEST_COMPARE (it.separators, 2);
   TEST_COMPARE (__grouping_iterator_init (&it, LC_MONETARY, loc, 8), true);
   TEST_COMPARE (it.remaining_in_current_group, 2);
   TEST_COMPARE (it.remaining, 8);
   TEST_COMPARE (*it.groupings, 3);
-  TEST_COMPARE (it.non_repeating_groups, 3); /* Locale duplicates 3.  */
+  TEST_COMPARE (it.non_repeating_groups, 0);
   TEST_COMPARE (it.separators, 2);
   freelocale (loc);
 
@@ -256,6 +256,68 @@ do_test (void)
   TEST_COMPARE (it.separators, 2);
   freelocale (loc);
 
+  loc = newlocale (LC_ALL_MASK, "bn_BD.UTF-8", 0);
+  TEST_VERIFY_EXIT (loc != 0);
+  ctype = loc->__locales[LC_CTYPE]->private;
+  TEST_VERIFY (ctype->outdigit_translation_needed);
+  for (int i = 0; i <= 9; ++i)
+    /* Locale uses Bengali digits.  */
+    TEST_COMPARE (ctype->outdigit_bytes[i], 3);
+  TEST_COMPARE (ctype->outdigit_bytes_all_equal, 3);
+  TEST_COMPARE (__grouping_iterator_init (&it, LC_NUMERIC, loc, 8), true);
+  TEST_COMPARE (it.remaining_in_current_group, 1);
+  TEST_COMPARE (it.remaining, 8);
+  TEST_COMPARE (*it.groupings, 2);
+  TEST_COMPARE (it.non_repeating_groups, 3);
+  TEST_COMPARE (it.separators, 3);
+  TEST_COMPARE (__grouping_iterator_init (&it, LC_MONETARY, loc, 8), true);
+  TEST_COMPARE (it.remaining_in_current_group, 1);
+  TEST_COMPARE (it.remaining, 8);
+  TEST_COMPARE (*it.groupings, 2);
+  TEST_COMPARE (it.non_repeating_groups, 3);
+  TEST_COMPARE (it.separators, 3);
+  freelocale (loc);
+
+  loc = newlocale (LC_ALL_MASK, "unm_US.UTF-8", 0);
+  TEST_VERIFY_EXIT (loc != 0);
+  ctype = loc->__locales[LC_CTYPE]->private;
+  TEST_VERIFY (!ctype->outdigit_translation_needed);
+  for (int i = 0; i <= 9; ++i)
+    TEST_COMPARE (ctype->outdigit_bytes[i], 1);
+  TEST_COMPARE (ctype->outdigit_bytes_all_equal, 1);
+  TEST_COMPARE (__grouping_iterator_init (&it, LC_NUMERIC, loc, 8), true);
+  TEST_COMPARE (it.remaining_in_current_group, 2);
+  TEST_COMPARE (it.remaining, 8);
+  TEST_COMPARE (*it.groupings, 3);
+  TEST_COMPARE (it.non_repeating_groups, 9);
+  TEST_COMPARE (it.separators, 3);
+  TEST_COMPARE (__grouping_iterator_init (&it, LC_MONETARY, loc, 8), true);
+  TEST_COMPARE (it.remaining_in_current_group, 2);
+  TEST_COMPARE (it.remaining, 8);
+  TEST_COMPARE (*it.groupings, 3);
+  TEST_COMPARE (it.non_repeating_groups, 0);
+  TEST_COMPARE (it.separators, 2);
+  freelocale (loc);
+
+  loc = newlocale (LC_ALL_MASK, "rw_RW.UTF-8", 0);
+  TEST_VERIFY_EXIT (loc != 0);
+  ctype = loc->__locales[LC_CTYPE]->private;
+  TEST_VERIFY (!ctype->outdigit_translation_needed);
+  for (int i = 0; i <= 9; ++i)
+    TEST_COMPARE (ctype->outdigit_bytes[i], 1);
+  TEST_COMPARE (ctype->outdigit_bytes_all_equal, 1);
+  /* rw_RW has grouping -1 in LC_NUMERIC */
+  TEST_COMPARE (__grouping_iterator_init (&it, LC_NUMERIC, loc, 8), false);
+  TEST_COMPARE (it.remaining_in_current_group, 8);
+  TEST_COMPARE (it.remaining, 8);
+  TEST_COMPARE (__grouping_iterator_init (&it, LC_MONETARY, loc, 8), true);
+  TEST_COMPARE (it.remaining_in_current_group, 2);
+  TEST_COMPARE (it.remaining, 8);
+  TEST_COMPARE (*it.groupings, 3);
+  TEST_COMPARE (it.non_repeating_groups, 0);
+  TEST_COMPARE (it.separators, 2);
+  freelocale (loc);
+
   return 0;
 }
 
