fix not enough buf error when decode date
diff --git a/date.go b/date.go
index e1af345..5fe83d4 100644
--- a/date.go
+++ b/date.go
@@ -81,7 +81,7 @@
 		return ZeroDate, nil
 	case tag == BC_DATE: //'d': //date
 		s = buf[:8]
-		l, err = d.next(s)
+		l, err = d.nextFull(s)
 		if err != nil {
 			return t, err
 		}
@@ -94,7 +94,7 @@
 
 	case tag == BC_DATE_MINUTE:
 		s = buf[:4]
-		l, err = d.next(s)
+		l, err = d.nextFull(s)
 		if err != nil {
 			return t, err
 		}
diff --git a/decode.go b/decode.go
index 25ae24a..b916703 100644
--- a/decode.go
+++ b/decode.go
@@ -129,6 +129,11 @@
 	return d.reader.Read(b)
 }
 
+// read byte arr, and return the real length of b
+func (d *Decoder) nextFull(b []byte) (int, error) {
+	return io.ReadFull(d.reader, b)
+}
+
 // peek n bytes, will not advance the read ptr
 func (d *Decoder) peek(n int) []byte {
 	b, _ := d.reader.Peek(n)