change package version
diff --git a/date.go b/date.go
index 5368da3..ad54034 100644
--- a/date.go
+++ b/date.go
@@ -26,6 +26,8 @@
 // Date
 /////////////////////////////////////////
 
+var ZeroDate = time.Time{}
+
 // # time in UTC encoded as 64-bit long milliseconds since epoch
 // ::= x4a b7 b6 b5 b4 b3 b2 b1 b0
 // ::= x4b b3 b2 b1 b0       # minutes since epoch
@@ -46,7 +48,7 @@
 // # time in UTC encoded as 64-bit long milliseconds since epoch
 // ::= x4a b7 b6 b5 b4 b3 b2 b1 b0
 // ::= x4b b3 b2 b1 b0       # minutes since epoch
-func (d *Decoder) decDate(flag int32) (interface{}, error) {
+func (d *Decoder) decDate(flag int32) (time.Time, error) {
 	var (
 		err error
 		l   int
@@ -65,7 +67,7 @@
 
 	switch {
 	case tag == BC_NULL:
-		return nil, nil
+		return ZeroDate, nil
 	case tag == BC_DATE: //'d': //date
 		s = buf[:8]
 		l, err = d.next(s)
diff --git a/date_test.go b/date_test.go
index 02cc93b..0d6ba97 100644
--- a/date_test.go
+++ b/date_test.go
@@ -15,10 +15,24 @@
 package hessian
 
 import (
+	"github.com/stretchr/testify/assert"
 	"testing"
 	"time"
 )
 
+func init() {
+	RegisterPOJO(&DateDemo{})
+}
+
+type DateDemo struct {
+	Name string
+	Date time.Time
+}
+
+func (DateDemo) JavaClassName() string {
+	return "test.model.DateDemo"
+}
+
 func TestEncDate(t *testing.T) {
 	var (
 		v   string
@@ -71,3 +85,43 @@
 	testJavaDecode(t, "argDate_1", time.Date(1998, 5, 8, 9, 51, 31, 0, time.UTC))
 	testJavaDecode(t, "argDate_2", time.Date(1998, 5, 8, 9, 51, 0, 0, time.UTC))
 }
+
+func TestEncDateNull(t *testing.T) {
+	var (
+		e   *Encoder
+		d   *Decoder
+		res interface{}
+	)
+	date := DateDemo{
+		Name: "s",
+		Date: ZeroDate,
+	}
+	e = NewEncoder()
+	e.Encode(date)
+	if len(e.Buffer()) == 0 {
+		t.Fail()
+	}
+	d = NewDecoder(e.Buffer())
+	res, _ = d.Decode()
+	assert.Equal(t, ZeroDate, res.(*DateDemo).Date)
+}
+
+func TestDateNulJavaDecode(t *testing.T) {
+	date := DateDemo{
+		Name: "s",
+		Date: ZeroDate,
+	}
+	testJavaDecode(t, "customArgTypedFixedList_DateNull", date)
+}
+
+func TestDateNullDecode(t *testing.T) {
+
+	doTestDateNull(t, "customReplyTypedFixedDateNull")
+}
+
+func doTestDateNull(t *testing.T, method string) {
+	testDecodeFrameworkFunc(t, method, func(r interface{}) {
+		t.Logf("%#v", r)
+		assert.Equal(t, ZeroDate, r.(*DateDemo).Date)
+	})
+}
diff --git a/encode.go b/encode.go
index f5f333b..2117bb2 100644
--- a/encode.go
+++ b/encode.go
@@ -101,9 +101,12 @@
 		e.buffer = encInt64(e.buffer, int64(val))
 
 	case time.Time:
-		e.buffer = encDateInMs(e.buffer, val)
-		// e.buffer = encDateInMimute(v.(time.Time), e.buffer)
-
+		if ZeroDate == val {
+			e.buffer = encNull(e.buffer)
+		} else {
+			e.buffer = encDateInMs(e.buffer, val)
+			// e.buffer = encDateInMimute(v.(time.Time), e.buffer)
+		}
 	case float32:
 		e.buffer = encFloat(e.buffer, float64(val))
 
diff --git a/test_hessian/src/main/java/test/TestCustomDecode.java b/test_hessian/src/main/java/test/TestCustomDecode.java
index 27ac4ce..dd9245d 100644
--- a/test_hessian/src/main/java/test/TestCustomDecode.java
+++ b/test_hessian/src/main/java/test/TestCustomDecode.java
@@ -26,6 +26,7 @@
 import java.util.Date;
 import java.util.List;
 import java.math.BigDecimal;
+import test.model.DateDemo;
 
 public class TestCustomDecode {
 
@@ -168,4 +169,9 @@
         BigDecimal o = (BigDecimal) input.readObject();
         return o.toString().equals( "100.256");
     }
+
+    public Object customArgTypedFixedList_DateNull() throws Exception {
+        DateDemo o = (DateDemo) input.readObject();
+        return o.getDate() == null;
+    }
 }
\ No newline at end of file
diff --git a/test_hessian/src/main/java/test/TestCustomReply.java b/test_hessian/src/main/java/test/TestCustomReply.java
index 21ada2a..83938da 100644
--- a/test_hessian/src/main/java/test/TestCustomReply.java
+++ b/test_hessian/src/main/java/test/TestCustomReply.java
@@ -23,6 +23,7 @@
 import java.util.Date;
 import java.util.HashMap;
 import java.math.BigDecimal;
+import test.model.DateDemo;
 
 public class TestCustomReply {
 
@@ -346,6 +347,12 @@
         output.flush();
     }
 
+    public void customReplyTypedFixedDateNull() throws Exception {
+        DateDemo demo = new DateDemo("zhangshan",null);
+        output.writeObject(demo);
+        output.flush();
+    }
+
 }
 
 class TypedListTest implements Serializable {
diff --git a/test_hessian/src/main/java/test/model/DateDemo.java b/test_hessian/src/main/java/test/model/DateDemo.java
new file mode 100644
index 0000000..56fcb52
--- /dev/null
+++ b/test_hessian/src/main/java/test/model/DateDemo.java
@@ -0,0 +1,32 @@
+package test.model;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class DateDemo implements Serializable {
+    private String name;
+    private Date date;
+
+    public String getName() {
+        return name;
+    }
+
+    public DateDemo() {}
+
+    public DateDemo(String name,Date date) {
+        this.name = name;
+        this.date = date;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+    public Date getDate() {
+        return date;
+    }
+
+    public void setDate(Date date) {
+        this.date = date;
+    }
+
+}
\ No newline at end of file