diff --git a/ndn-cpp/key-chain.hpp b/ndn-cpp/key-chain.hpp
index 2259064..1ddaa91 100644
--- a/ndn-cpp/key-chain.hpp
+++ b/ndn-cpp/key-chain.hpp
@@ -15,7 +15,8 @@
   /**
    * In data, set the signed info publisher public key digest and key locator key to the default public key and set the 
    * signature using the default private key.
-   * Note: the caller must make sure the timestamp is correct with data.getSignedInfo().setTimestampMilliseconds.
+   * Note: the caller must make sure the timestamp is correct, for example with 
+   * data.getSignedInfo().setTimestampMilliseconds(time(NULL) * 1000.0).
    * @param data The Data object to sign and set the signature.
    */
   static void defaultSign(Data &data);
diff --git a/tests/test-encode-decode-data.cpp b/tests/test-encode-decode-data.cpp
index 6c18437..0c0de84 100644
--- a/tests/test-encode-decode-data.cpp
+++ b/tests/test-encode-decode-data.cpp
@@ -6,6 +6,7 @@
 #include <cstdlib>
 #include <sstream>
 #include <iostream>
+#include <time.h>
 #if 0
 #include <boost/date_time/posix_time/posix_time_types.hpp>
 #include <boost/date_time/posix_time/time_serialize.hpp>
@@ -95,9 +96,15 @@
        << (data.getSignedInfo().getPublisherPublicKeyDigest().getPublisherPublicKeyDigest().size() > 0 ? 
            toHex(data.getSignedInfo().getPublisherPublicKeyDigest().getPublisherPublicKeyDigest()).c_str() : "<none>") << endl;
   cout << "signedInfo.timestamp: ";
-  if (data.getSignedInfo().getTimestampMilliseconds() >= 0)
+  if (data.getSignedInfo().getTimestampMilliseconds() >= 0) {
     cout << data.getSignedInfo().getTimestampMilliseconds() << " milliseconds" << endl;
     // TODO: dump timestamp real date.
+#if 0
+    ptime timestamp = UNIX_EPOCH_TIME + milliseconds(data.getSignedInfo().getTimestampMilliseconds());
+    cout << "Data timestamp " << timestamp.date().year() << "/" << timestamp.date().month() << "/" << timestamp.date().day() 
+         << " " << timestamp.time_of_day().hours() << ":" << timestamp.time_of_day().minutes() << ":" << timestamp.time_of_day().seconds()  << endl;
+#endif
+  }
   else
     cout << "<none>" << endl;
   cout << "signedInfo.freshnessSeconds: ";
@@ -131,11 +138,6 @@
     data.wireDecode(Data1, sizeof(Data1));
     cout << "Decoded Data:" << endl;
     dumpData(data);
-#if 0
-    ptime timestamp = UNIX_EPOCH_TIME + milliseconds(data.getSignedInfo().getTimestampMilliseconds());
-    cout << "Data timestamp " << timestamp.date().year() << "/" << timestamp.date().month() << "/" << timestamp.date().day() 
-         << " " << timestamp.time_of_day().hours() << ":" << timestamp.time_of_day().minutes() << ":" << timestamp.time_of_day().seconds()  << endl;
-#endif
     
     ptr_lib::shared_ptr<vector<unsigned char> > encoding = data.wireEncode();
     
@@ -147,8 +149,7 @@
     Data freshData(Name("/ndn/abc"));
     const unsigned char freshContent[] = "SUCCESS!";
     freshData.setContent(freshContent, sizeof(freshContent) - 1);
-    freshData.getSignedInfo().setTimestampMilliseconds(256);
-
+    freshData.getSignedInfo().setTimestampMilliseconds(time(NULL) * 1000.0);
     
     KeyChain::defaultSign(freshData);
     cout << endl << "Freshly signed data:" << endl;
