diff --git a/extensions/openpower-pels/registry.cpp b/extensions/openpower-pels/registry.cpp
index c9c4169..e646928 100644
--- a/extensions/openpower-pels/registry.cpp
+++ b/extensions/openpower-pels/registry.cpp
@@ -560,10 +560,10 @@
     const auto& callouts = json["CalloutsWithTheirADValues"];
 
     // find the entry with that AD value
-    auto it = std::find_if(
-        callouts.begin(), callouts.end(), [adValue](const nlohmann::json& j) {
-            return *adValue == j["ADValue"].get<std::string>();
-        });
+    auto it = std::find_if(callouts.begin(), callouts.end(),
+                           [adValue](const nlohmann::json& j) {
+        return *adValue == j["ADValue"].get<std::string>();
+    });
 
     if (it == callouts.end())
     {
@@ -658,13 +658,12 @@
     auto& reg = (_registry) ? _registry : registryTmp;
     const auto& registry = reg.value();
     // Find an entry with this name in the PEL array.
-    auto e = std::find_if(
-        registry["PELs"].begin(), registry["PELs"].end(),
-        [&name, &type](const auto& j) {
-            return ((name == j["Name"] && type == LookupType::name) ||
-                    (name == j["SRC"]["ReasonCode"] &&
-                     type == LookupType::reasonCode));
-        });
+    auto e = std::find_if(registry["PELs"].begin(), registry["PELs"].end(),
+                          [&name, &type](const auto& j) {
+        return (
+            (name == j["Name"] && type == LookupType::name) ||
+            (name == j["SRC"]["ReasonCode"] && type == LookupType::reasonCode));
+    });
 
     if (e != registry["PELs"].end())
     {
