internal/number: fix grouping placement bug

Change-Id: I63a802fbfafe6b758e1a173bf3753e9084b31326
Reviewed-on: https://go-review.googlesource.com/46250
Run-TryBot: Marcel van Lohuizen <mpvl@golang.org>
Reviewed-by: Nigel Tao <nigeltao@golang.org>
diff --git a/internal/number/format.go b/internal/number/format.go
index 9ceaf04..a5f2efd 100755
--- a/internal/number/format.go
+++ b/internal/number/format.go
@@ -192,9 +192,9 @@
 		minInt = 1
 	}
 	// add leading zeros
-	for i := numInt; i < minInt; i++ {
+	for i := minInt; i > numInt; i-- {
 		dst = f.AppendDigit(dst, 0)
-		if f.needsSep(minInt - i) {
+		if f.needsSep(i) {
 			dst = append(dst, f.Symbol(SymGroup)...)
 		}
 	}
diff --git a/internal/number/format_test.go b/internal/number/format_test.go
index 850ad82..0ec2440 100755
--- a/internal/number/format_test.go
+++ b/internal/number/format_test.go
@@ -148,6 +148,14 @@
 			"123456789012": "1,23,45,67,89,012",
 			"0.123456789":  "0.123",
 		},
+	}, {
+		pattern: "0,00,000.###",
+		test: pairs{
+			"0":            "0,00,000",
+			"123456789012": "1,23,45,67,89,012",
+			"12.3456789":   "0,00,012.345",
+			"0.123456789":  "0,00,000.123",
+		},
 
 		// Support for ill-formed patterns.
 	}, {