diff --git a/unicode/norm/iter.go b/unicode/norm/iter.go
index ce17f96..417c6b2 100644
--- a/unicode/norm/iter.go
+++ b/unicode/norm/iter.go
@@ -128,8 +128,9 @@
 func nextASCIIBytes(i *Iter) []byte {
 	p := i.p + 1
 	if p >= i.rb.nsrc {
+		p0 := i.p
 		i.setDone()
-		return i.rb.src.bytes[i.p:p]
+		return i.rb.src.bytes[p0:p]
 	}
 	if i.rb.src.bytes[p] < utf8.RuneSelf {
 		p0 := i.p
diff --git a/unicode/norm/iter_test.go b/unicode/norm/iter_test.go
index d95aa30..5a8fdab 100644
--- a/unicode/norm/iter_test.go
+++ b/unicode/norm/iter_test.go
@@ -9,7 +9,7 @@
 	"testing"
 )
 
-func doIterNorm(f Form, s string) []byte {
+func doIterNormString(f Form, s string) []byte {
 	acc := []byte{}
 	i := Iter{}
 	i.InitString(f, s)
@@ -19,8 +19,21 @@
 	return acc
 }
 
+func doIterNorm(f Form, s string) []byte {
+	acc := []byte{}
+	i := Iter{}
+	i.Init(f, []byte(s))
+	for !i.Done() {
+		acc = append(acc, i.Next()...)
+	}
+	return acc
+}
+
 func TestIterNext(t *testing.T) {
 	runNormTests(t, "IterNext", func(f Form, out []byte, s string) []byte {
+		return doIterNormString(f, string(append(out, s...)))
+	})
+	runNormTests(t, "IterNext", func(f Form, out []byte, s string) []byte {
 		return doIterNorm(f, string(append(out, s...)))
 	})
 }
