diff --git a/internal/number/pattern.go b/internal/number/pattern.go
index 018cf02..ad8f729 100644
--- a/internal/number/pattern.go
+++ b/internal/number/pattern.go
@@ -104,7 +104,8 @@
 }
 
 func (p *parser) updateGrouping() {
-	if p.hasGroup && p.groupingCount < 255 {
+	if p.hasGroup &&
+		0 < p.groupingCount && p.groupingCount < 255 {
 		p.GroupingSize[1] = p.GroupingSize[0]
 		p.GroupingSize[0] = uint8(p.groupingCount)
 	}
@@ -163,6 +164,7 @@
 	s = p.parsePad(s, PadAfterPrefix)
 
 	s = p.parse(p.number, s)
+	p.updateGrouping()
 
 	s = p.parsePad(s, PadBeforeSuffix)
 	s = p.parseAffix(s)
@@ -294,6 +296,8 @@
 			next = p.exponent
 		case '.':
 			next = p.fraction
+		case ',':
+			next = p.integer
 		}
 		p.updateGrouping()
 		return next
diff --git a/internal/number/pattern_test.go b/internal/number/pattern_test.go
index 810b5a8..6adeaf7 100644
--- a/internal/number/pattern_test.go
+++ b/internal/number/pattern_test.go
@@ -26,6 +26,20 @@
 		MinIntegerDigits: 1,
 	},
 }, {
+	"+0",
+	&Pattern{
+		Affix:            "\x01+\x00",
+		FormatWidth:      2,
+		MinIntegerDigits: 1,
+	},
+}, {
+	"0+",
+	&Pattern{
+		Affix:            "\x00\x01+",
+		FormatWidth:      2,
+		MinIntegerDigits: 1,
+	},
+}, {
 	"0000",
 	&Pattern{
 		FormatWidth:      4,
@@ -52,6 +66,22 @@
 		MaxFractionDigits: 6,
 	},
 }, {
+	"#,0",
+	&Pattern{
+		FormatWidth:      3,
+		GroupingSize:     [2]uint8{1, 0},
+		MinIntegerDigits: 1,
+	},
+}, {
+	"#,0.00",
+	&Pattern{
+		FormatWidth:       6,
+		GroupingSize:      [2]uint8{1, 0},
+		MinIntegerDigits:  1,
+		MinFractionDigits: 2,
+		MaxFractionDigits: 2,
+	},
+}, {
 	"#,##0.###",
 	&Pattern{
 		FormatWidth:       9,
@@ -176,7 +206,7 @@
 		MaxFractionDigits: 3,
 	},
 }, {
-	// Rounding increments
+	// Rounding increment
 	"1.05",
 	&Pattern{
 		RoundIncrement:    105,
@@ -186,6 +216,17 @@
 		MaxFractionDigits: 2,
 	},
 }, {
+	// Rounding increment with grouping
+	"1,05",
+	&Pattern{
+		RoundIncrement:    105,
+		FormatWidth:       4,
+		GroupingSize:      [2]uint8{2, 0},
+		MinIntegerDigits:  3,
+		MinFractionDigits: 0,
+		MaxFractionDigits: 0,
+	},
+}, {
 	"0.0%",
 	&Pattern{
 		Affix:             "\x00\x01%",
@@ -282,19 +323,21 @@
 
 func TestParsePattern(t *testing.T) {
 	for i, tc := range testCases {
-		f, err := ParsePattern(tc.pat)
-		if !reflect.DeepEqual(f, tc.want) {
-			t.Errorf("%d:%s:\ngot %#v;\nwant %#v", i, tc.pat, f, tc.want)
-		}
-		if got, want := err != nil, tc.want == nil; got != want {
-			t.Errorf("%d:%s:error: got %v; want %v", i, tc.pat, err, want)
-		}
+		t.Run(tc.pat, func(t *testing.T) {
+			f, err := ParsePattern(tc.pat)
+			if !reflect.DeepEqual(f, tc.want) {
+				t.Errorf("%d:%s:\ngot %#v;\nwant %#v", i, tc.pat, f, tc.want)
+			}
+			if got, want := err != nil, tc.want == nil; got != want {
+				t.Errorf("%d:%s:error: got %v; want %v", i, tc.pat, err, want)
+			}
+		})
 	}
 }
 
 func TestPatternSize(t *testing.T) {
 	if sz := unsafe.Sizeof(Pattern{}); sz > 48 {
-		t.Errorf("got %d; want 48", sz)
+		t.Errorf("got %d; want <= 48", sz)
 	}
 
 }
