diff --git a/compression/rle/read_write.go b/compression/rle/read_write.go
index e6f78e3724f2547774149a792bf35a306422f669..b4b73dab4dc440c3495743b760ebf019b0894cf3 100644
--- a/compression/rle/read_write.go
+++ b/compression/rle/read_write.go
@@ -37,6 +37,8 @@ func Decompress(dat []byte) ([]byte, error) {
 			} else {
 				return nil, errors.New("error reading bytes. token encountered without proceeding bytes")
 			}
+		} else {
+			buf.WriteByte(dat[i])
 		}
 	}
 
diff --git a/compression/rle/read_write_test.go b/compression/rle/read_write_test.go
index 944822a47e7472004648b925258621f83cff1119..76ceb635024bdb8edc138eb7986d8d11df4ed504 100644
--- a/compression/rle/read_write_test.go
+++ b/compression/rle/read_write_test.go
@@ -91,3 +91,25 @@ func TestCompressMulti(t *testing.T) {
 		t.Error("expected", exp, "got", res)
 	}
 }
+
+func TestCompressDecompress(t *testing.T) {
+	var in []byte
+
+	for i := 0; i < 20; i++ {
+		in = append(in, []byte{0, 0, 0, 0, 0}...)
+		in = append(in, crypto.Sha3([]byte(""))...)
+		in = append(in, crypto.Sha3([]byte{0x80})...)
+		in = append(in, []byte{123, 2, 19, 89, 245, 254, 255, token, 98, 233}...)
+		in = append(in, token)
+	}
+
+	c := Compress(in)
+	d, err := Decompress(c)
+	if err != nil {
+		t.Error(err)
+	}
+
+	if bytes.Compare(d, in) != 0 {
+		t.Error("multi failed\n", d, "\n", in)
+	}
+}