diff --git a/extensions/openpower-pels/tools/peltool.cpp b/extensions/openpower-pels/tools/peltool.cpp
index 810223a..0e7ff8c 100644
--- a/extensions/openpower-pels/tools/peltool.cpp
+++ b/extensions/openpower-pels/tools/peltool.cpp
@@ -83,7 +83,7 @@
 
         try
         {
-            auto tmp = std::stoul(token.substr(i, 2), 0, 16);
+            auto tmp = std::stoul(token.substr(i, 2), nullptr, 16);
             bcdTime |= (static_cast<uint64_t>(tmp) << 56);
         }
         catch (const std::exception& err)
@@ -93,7 +93,7 @@
         i += 2;
         try
         {
-            auto tmp = std::stoul(token.substr(i, 2), 0, 16);
+            auto tmp = std::stoul(token.substr(i, 2), nullptr, 16);
             bcdTime |= (static_cast<uint64_t>(tmp) << 48);
         }
         catch (const std::exception& err)
@@ -103,7 +103,7 @@
         i += 2;
         try
         {
-            auto tmp = std::stoul(token.substr(i, 2), 0, 16);
+            auto tmp = std::stoul(token.substr(i, 2), nullptr, 16);
             bcdTime |= (static_cast<uint64_t>(tmp) << 40);
         }
         catch (const std::exception& err)
@@ -113,7 +113,7 @@
         i += 2;
         try
         {
-            auto tmp = std::stoul(token.substr(i, 2), 0, 16);
+            auto tmp = std::stoul(token.substr(i, 2), nullptr, 16);
             bcdTime |= (static_cast<uint64_t>(tmp) << 32);
         }
         catch (const std::exception& err)
@@ -123,7 +123,7 @@
         i += 2;
         try
         {
-            auto tmp = std::stoul(token.substr(i, 2), 0, 16);
+            auto tmp = std::stoul(token.substr(i, 2), nullptr, 16);
             bcdTime |= (tmp << 24);
         }
         catch (const std::exception& err)
@@ -133,7 +133,7 @@
         i += 2;
         try
         {
-            auto tmp = std::stoul(token.substr(i, 2), 0, 16);
+            auto tmp = std::stoul(token.substr(i, 2), nullptr, 16);
             bcdTime |= (tmp << 16);
         }
         catch (const std::exception& err)
@@ -143,7 +143,7 @@
         i += 2;
         try
         {
-            auto tmp = std::stoul(token.substr(i, 2), 0, 16);
+            auto tmp = std::stoul(token.substr(i, 2), nullptr, 16);
             bcdTime |= (tmp << 8);
         }
         catch (const std::exception& err)
@@ -153,7 +153,7 @@
         i += 2;
         try
         {
-            auto tmp = std::stoul(token.substr(i, 2), 0, 16);
+            auto tmp = std::stoul(token.substr(i, 2), nullptr, 16);
             bcdTime |= tmp;
         }
         catch (const std::exception& err)
@@ -174,7 +174,7 @@
     uint32_t num = 0;
     try
     {
-        num = std::stoul(fileName.substr(fileName.find("_") + 1), 0, 16);
+        num = std::stoul(fileName.substr(fileName.find("_") + 1), nullptr, 16);
     }
     catch (const std::exception& err)
     {
