diff --git a/extensions/openpower-pels/src.cpp b/extensions/openpower-pels/src.cpp
index a8694f2..538f3e2 100644
--- a/extensions/openpower-pels/src.cpp
+++ b/extensions/openpower-pels/src.cpp
@@ -496,13 +496,22 @@
                     adFields = entry->src.hexwordADFields.value();
                 for (const auto& hexwordMap : adFields)
                 {
-                    std::vector<std::string> valueDescr;
-                    valueDescr.push_back(getNumberString(
+                    auto srcValue = getNumberString(
                         "0x%X",
-                        _hexData[getWordIndexFromWordNum(hexwordMap.first)]));
-                    valueDescr.push_back(std::get<1>(hexwordMap.second));
-                    jsonInsertArray(errorOut, std::get<0>(hexwordMap.second),
-                                    valueDescr, 2);
+                        _hexData[getWordIndexFromWordNum(hexwordMap.first)]);
+
+                    auto srcKey = std::get<0>(hexwordMap.second);
+                    auto srcDesc = std::get<1>(hexwordMap.second);
+
+                    // Only include this hex word in the error details if the
+                    // description exists.
+                    if (!srcDesc.empty())
+                    {
+                        std::vector<std::string> valueDescr;
+                        valueDescr.push_back(srcValue);
+                        valueDescr.push_back(srcDesc);
+                        jsonInsertArray(errorOut, srcKey, valueDescr, 2);
+                    }
                 }
             }
             errorOut.erase(errorOut.size() - 2);
