diff --git a/ndn-cpp/Interest.cpp b/ndn-cpp/Interest.cpp
index 2b39b49..634559e 100644
--- a/ndn-cpp/Interest.cpp
+++ b/ndn-cpp/Interest.cpp
@@ -48,7 +48,7 @@
 	childSelector_ = interestStruct.childSelector;
 	answerOriginKind_ = interestStruct.answerOriginKind;
 	scope_ = interestStruct.scope;
-	interestLifetime_ = interestStruct.interestLifetime;
+	interestLifetimeMilliseconds_ = interestStruct.interestLifetimeMilliseconds;
   setVector(nonce_, interestStruct.nonce, interestStruct.nonceLength);
 }
 
@@ -62,7 +62,7 @@
   interestStruct.childSelector = childSelector_;
   interestStruct.answerOriginKind = answerOriginKind_;
   interestStruct.scope = scope_;
-  interestStruct.interestLifetime = interestLifetime_;
+  interestStruct.interestLifetimeMilliseconds = interestLifetimeMilliseconds_;
 
   interestStruct.nonceLength = nonce_.size();
   if (nonce_.size() > 0)
diff --git a/ndn-cpp/Interest.hpp b/ndn-cpp/Interest.hpp
index cf5647b..b279bf0 100644
--- a/ndn-cpp/Interest.hpp
+++ b/ndn-cpp/Interest.hpp
@@ -125,7 +125,7 @@
 	  childSelector_ = -1;
 	  answerOriginKind_ = -1;
 	  scope_ = -1;
-	  interestLifetime_ = -1;
+	  interestLifetimeMilliseconds_ = -1.0;
   }
   
   void encode(std::vector<unsigned char> &output, WireFormat &wireFormat) const 
@@ -179,7 +179,7 @@
 
   int getScope() const { return scope_; }
 
-  int getInterestLifetime() const { return interestLifetime_; }
+  double getInterestLifetimeMilliseconds() const { return interestLifetimeMilliseconds_; }
 
   const std::vector<unsigned char> getNonce() const { return nonce_; }
   
@@ -199,7 +199,7 @@
 
   void setScope(int value) { scope_ = value; }
 
-  void setInterestLifetime(int value) { interestLifetime_ = value; }
+  void setInterestLifetimeMilliseconds(double value) { interestLifetimeMilliseconds_ = value; }
 
   void setNonce(const std::vector<unsigned char> &value) { nonce_ = value; }
   
@@ -213,7 +213,7 @@
 	int childSelector_;
 	int answerOriginKind_;
 	int scope_;
-	int interestLifetime_;
+	double interestLifetimeMilliseconds_;
 	std::vector<unsigned char> nonce_;
 };
   
diff --git a/ndn-cpp/c/Interest.h b/ndn-cpp/c/Interest.h
index 832fb96..ada7a7e 100644
--- a/ndn-cpp/c/Interest.h
+++ b/ndn-cpp/c/Interest.h
@@ -85,7 +85,7 @@
 	int childSelector;        /**< -1 for none */
 	int answerOriginKind;     /**< -1 for none */
 	int scope;                /**< -1 for none */
-	int interestLifetime;     /**< milliseconds. -1 for none */
+	double interestLifetimeMilliseconds; /**< milliseconds. -1.0 for none */
 	unsigned char *nonce;	    /**< pointer to pre-allocated buffer.  0 for none */
   unsigned int nonceLength; /**< length of nonce.  0 for none */
 };
@@ -111,7 +111,7 @@
 	self->childSelector = -1;
 	self->answerOriginKind = -1;
 	self->scope = -1;
-	self->interestLifetime = -1;
+	self->interestLifetimeMilliseconds = -1.0;
 	self->nonce = 0;
 	self->nonceLength = 0;
 }
diff --git a/ndn-cpp/c/encoding/BinaryXMLInterest.c b/ndn-cpp/c/encoding/BinaryXMLInterest.c
index 5708761..1dda876 100644
--- a/ndn-cpp/c/encoding/BinaryXMLInterest.c
+++ b/ndn-cpp/c/encoding/BinaryXMLInterest.c
@@ -155,11 +155,11 @@
       (encoder, ndn_BinaryXML_DTag_Scope, interest->scope))
     return error;
   
-  if (interest->interestLifetime >= 0) {
+  if (interest->interestLifetimeMilliseconds >= 0) {
     if (error = ndn_BinaryXMLEncoder_writeElementStartDTag(encoder, ndn_BinaryXML_DTag_InterestLifetime))
       return error;
    
-    unsigned int ticks = (unsigned int)(((double)interest->interestLifetime / 1000.0) * 4096.0);
+    unsigned int ticks = (unsigned int)((interest->interestLifetimeMilliseconds / 1000.0) * 4096.0);
     if (error = ndn_BinaryXMLEncoder_writeUnsignedIntBigEndianBlob(encoder, ticks))
       return error;
     
@@ -225,11 +225,11 @@
         (decoder, ndn_BinaryXML_DTag_InterestLifetime, 0, &interestLifetime, &interestLifetimeLength))
       return error;
     
-    interest->interestLifetime = (int)(1000.0 * 
-      (double)ndn_BinaryXMLDecoder_bigEndianToUnsignedInt(interestLifetime, interestLifetimeLength) / 4096.0);
+    interest->interestLifetimeMilliseconds = 1000.0 * 
+      (double)ndn_BinaryXMLDecoder_bigEndianToUnsignedInt(interestLifetime, interestLifetimeLength) / 4096.0;
   }
   else
-    interest->interestLifetime = -1;
+    interest->interestLifetimeMilliseconds = -1.0;
   
   if (error = ndn_BinaryXMLDecoder_readOptionalBinaryDTagElement
       (decoder, ndn_BinaryXML_DTag_Nonce, 0, &interest->nonce, &interest->nonceLength))
diff --git a/tests/test-encode-decode-Interest.cpp b/tests/test-encode-decode-Interest.cpp
index 6c13d87..446a9a4 100644
--- a/tests/test-encode-decode-Interest.cpp
+++ b/tests/test-encode-decode-Interest.cpp
@@ -42,7 +42,7 @@
     cout << "Interest minSuffixComponents " << interest.getMinSuffixComponents() << endl;
     cout << "Interest publisherPublicKeyDigest length " << interest.getPublisherPublicKeyDigest().getPublisherPublicKeyDigest().size() << endl;
     cout << "Interest excludeEntryCount " << interest.getExclude().getEntryCount() << endl;
-    cout << "InterestLifetime " << interest.getInterestLifetime() << endl;
+    cout << "InterestLifetimeMilliseconds " << interest.getInterestLifetimeMilliseconds() << endl;
     
     vector<unsigned char> encoding;
     interest.encode(encoding);
@@ -54,7 +54,7 @@
     cout << "Re-decoded Interest minSuffixComponents " << reDecodedInterest.getMinSuffixComponents() << endl;
     cout << "Re-decoded Interest publisherPublicKeyDigest length " << reDecodedInterest.getPublisherPublicKeyDigest().getPublisherPublicKeyDigest().size() << endl;
     cout << "Re-decoded Interest excludeEntryCount " << reDecodedInterest.getExclude().getEntryCount() << endl;
-    cout << "Re-decoded InterestLifetime " << reDecodedInterest.getInterestLifetime() << endl;
+    cout << "Re-decoded InterestLifetimeMilliseconds " << reDecodedInterest.getInterestLifetimeMilliseconds() << endl;
   } catch (exception &e) {
     cout << "exception: " << e.what() << endl;
   }
