diff --git a/width/tables.go b/width/tables.go
index 7b7f0a9..82fe20d 100644
--- a/width/tables.go
+++ b/width/tables.go
@@ -38,7 +38,7 @@
 		i = widthIndex[o]
 		c2 := s[2]
 		if c2 < 0x80 || 0xC0 <= c2 {
-			return 0, 1 // Illegal UTF-8: not a continuation byte.
+			return 0, 2 // Illegal UTF-8: not a continuation byte.
 		}
 		return t.lookupValue(uint32(i), c2), 3
 	case c0 < 0xF8: // 4-byte UTF-8
@@ -54,13 +54,13 @@
 		i = widthIndex[o]
 		c2 := s[2]
 		if c2 < 0x80 || 0xC0 <= c2 {
-			return 0, 1 // Illegal UTF-8: not a continuation byte.
+			return 0, 2 // Illegal UTF-8: not a continuation byte.
 		}
 		o = uint32(i)<<6 + uint32(c2)
 		i = widthIndex[o]
 		c3 := s[3]
 		if c3 < 0x80 || 0xC0 <= c3 {
-			return 0, 1 // Illegal UTF-8: not a continuation byte.
+			return 0, 3 // Illegal UTF-8: not a continuation byte.
 		}
 		return t.lookupValue(uint32(i), c3), 4
 	}
@@ -123,7 +123,7 @@
 		i = widthIndex[o]
 		c2 := s[2]
 		if c2 < 0x80 || 0xC0 <= c2 {
-			return 0, 1 // Illegal UTF-8: not a continuation byte.
+			return 0, 2 // Illegal UTF-8: not a continuation byte.
 		}
 		return t.lookupValue(uint32(i), c2), 3
 	case c0 < 0xF8: // 4-byte UTF-8
@@ -139,13 +139,13 @@
 		i = widthIndex[o]
 		c2 := s[2]
 		if c2 < 0x80 || 0xC0 <= c2 {
-			return 0, 1 // Illegal UTF-8: not a continuation byte.
+			return 0, 2 // Illegal UTF-8: not a continuation byte.
 		}
 		o = uint32(i)<<6 + uint32(c2)
 		i = widthIndex[o]
 		c3 := s[3]
 		if c3 < 0x80 || 0xC0 <= c3 {
-			return 0, 1 // Illegal UTF-8: not a continuation byte.
+			return 0, 3 // Illegal UTF-8: not a continuation byte.
 		}
 		return t.lookupValue(uint32(i), c3), 4
 	}
