properly track prefix bytes written
diff --git a/indent.go b/indent.go
index 626de75..4ebac45 100644
--- a/indent.go
+++ b/indent.go
@@ -31,6 +31,7 @@
 	bol bool
 	pre [][]byte
 	sel int
+	off int
 }
 
 // NewIndentWriter makes a new write filter that indents the input
@@ -49,7 +50,10 @@
 func (w *indentWriter) Write(p []byte) (n int, err error) {
 	for _, c := range p {
 		if w.bol {
-			if _, err = w.w.Write(w.pre[w.sel]); err != nil {
+			var i int
+			i, err = w.w.Write(w.pre[w.sel][w.off:])
+			w.off += i
+			if err != nil {
 				return n, err
 			}
 		}
@@ -59,8 +63,11 @@
 		}
 		n++
 		w.bol = c == '\n'
-		if w.bol && w.sel < len(w.pre)-1 {
-			w.sel++
+		if w.bol {
+			w.off = 0
+			if w.sel < len(w.pre)-1 {
+				w.sel++
+			}
 		}
 	}
 	return n, nil