diff --git a/lib/fed/encoder.go b/lib/fed/encoder.go
index a4a22124f662c5cb29ce27324681058ad7840d1c..809ea82ca92f36f1c94946dbd41c528bd9201e90 100644
--- a/lib/fed/encoder.go
+++ b/lib/fed/encoder.go
@@ -196,6 +196,7 @@ func (T *Encoder) String(v string) error {
 	for len(v) > 0 {
 		n := copy(T.buffer[T.bufferPos:], v)
 		T.bufferPos += n
+		T.packetPos += n
 		if T.bufferPos >= len(T.buffer) {
 			if err := T.Flush(); err != nil {
 				return err
@@ -203,5 +204,9 @@ func (T *Encoder) String(v string) error {
 		}
 		v = v[n:]
 	}
-	return T.writeByte(0)
+	if err := T.writeByte(0); err != nil {
+		return err
+	}
+	T.packetPos += 1
+	return nil
 }