diff --git a/ibm_vpd_app.cpp b/ibm_vpd_app.cpp
index d4db801..65666f0 100644
--- a/ibm_vpd_app.cpp
+++ b/ibm_vpd_app.cpp
@@ -44,9 +44,10 @@
 // The list of keywords for VSYS record is as per the S0 system. Should
 // be updated for another type of systems
 static const std::unordered_map<std::string, std::vector<std::string>>
-    svpdKwdMap{{"VSYS", {"BR", "TM", "SE", "SU", "RB", "WN"}},
+    svpdKwdMap{{"VSYS", {"BR", "TM", "SE", "SU", "RB", "WN", "RG"}},
                {"VCEN", {"FC", "SE"}},
-               {"LXR0", {"LX"}}};
+               {"LXR0", {"LX"}},
+               {"UTIL", {"D0"}}};
 
 /**
  * @brief Returns the power state for chassis0
@@ -1003,9 +1004,23 @@
                     const string& busValue = readBusProperty(
                         objectPath, ipzVpdInf + recordName, keyword);
 
-                    if (busValue.find_first_not_of(' ') != string::npos)
+                    std::string defaultValue{' '};
+
+                    // Explicit check for D0 is required as this keyword will
+                    // never be blank and 0x00 should be treated as no value in
+                    // this case.
+                    if (recordName == "UTIL" && keyword == "D0")
                     {
-                        if (kwdValue.find_first_not_of(' ') != string::npos)
+                        // default value of kwd D0 is 0x00. This kwd will never
+                        // be blank.
+                        defaultValue = '\0';
+                    }
+
+                    if (busValue.find_first_not_of(defaultValue) !=
+                        string::npos)
+                    {
+                        if (kwdValue.find_first_not_of(defaultValue) !=
+                            string::npos)
                         {
                             // both the data are present, check for mismatch
                             if (busValue != kwdValue)
@@ -1039,7 +1054,8 @@
                             kwdValue = busValue;
                         }
                     }
-                    else if (kwdValue.find_first_not_of(' ') == string::npos)
+                    else if (kwdValue.find_first_not_of(defaultValue) ==
+                             string::npos)
                     {
                         string errMsg = "VPD is blank on both cache and "
                                         "hardware for record: ";
