diff --git a/ndn-cpp/c/encoding/BinaryXMLInterest.c b/ndn-cpp/c/encoding/BinaryXMLInterest.c
index 9b06a76..5708761 100644
--- a/ndn-cpp/c/encoding/BinaryXMLInterest.c
+++ b/ndn-cpp/c/encoding/BinaryXMLInterest.c
@@ -128,16 +128,12 @@
   if (error = ndn_encodeBinaryXMLName(&interest->name, encoder))
     return error;
   
-  if (interest->minSuffixComponents >= 0) {
-    if (error = ndn_BinaryXMLEncoder_writeUnsignedDecimalIntDTagElement
-        (encoder, ndn_BinaryXML_DTag_MinSuffixComponents, (unsigned int)interest->minSuffixComponents))
-      return error;
-  }
-  if (interest->maxSuffixComponents >= 0) {
-    if (error = ndn_BinaryXMLEncoder_writeUnsignedDecimalIntDTagElement
-        (encoder, ndn_BinaryXML_DTag_MaxSuffixComponents, (unsigned int)interest->maxSuffixComponents))
-      return error;
-  }
+  if (error = ndn_BinaryXMLEncoder_writeOptionalUnsignedDecimalIntDTagElement
+      (encoder, ndn_BinaryXML_DTag_MinSuffixComponents, interest->minSuffixComponents))
+    return error;
+  if (error = ndn_BinaryXMLEncoder_writeOptionalUnsignedDecimalIntDTagElement
+      (encoder, ndn_BinaryXML_DTag_MaxSuffixComponents, interest->maxSuffixComponents))
+    return error;
     
   // This will skip encoding if there is no publisherPublicKeyDigest.
   if (error = ndn_encodeBinaryXMLPublisherPublicKeyDigest(&interest->publisherPublicKeyDigest, encoder))
@@ -147,21 +143,17 @@
   if (error = encodeExclude(&interest->exclude, encoder))
     return error;
 
-  if (interest->childSelector >= 0) {
-    if (error = ndn_BinaryXMLEncoder_writeUnsignedDecimalIntDTagElement
-        (encoder, ndn_BinaryXML_DTag_ChildSelector, (unsigned int)interest->childSelector))
-      return error;
-  }
+  if (error = ndn_BinaryXMLEncoder_writeOptionalUnsignedDecimalIntDTagElement
+      (encoder, ndn_BinaryXML_DTag_ChildSelector, interest->childSelector))
+    return error;
   if (interest->answerOriginKind >= 0 && interest->answerOriginKind != ndn_Interest_DEFAULT_ANSWER_ORIGIN_KIND) {
     if (error = ndn_BinaryXMLEncoder_writeUnsignedDecimalIntDTagElement
         (encoder, ndn_BinaryXML_DTag_AnswerOriginKind, (unsigned int)interest->answerOriginKind))
       return error;
   }
-  if (interest->scope >= 0) {
-    if (error = ndn_BinaryXMLEncoder_writeUnsignedDecimalIntDTagElement
-        (encoder, ndn_BinaryXML_DTag_Scope, (unsigned int)interest->scope))
-      return error;
-  }
+  if (error = ndn_BinaryXMLEncoder_writeOptionalUnsignedDecimalIntDTagElement
+      (encoder, ndn_BinaryXML_DTag_Scope, interest->scope))
+    return error;
   
   if (interest->interestLifetime >= 0) {
     if (error = ndn_BinaryXMLEncoder_writeElementStartDTag(encoder, ndn_BinaryXML_DTag_InterestLifetime))
