diff --git a/src/report.cpp b/src/report.cpp
index c2813c0..54189e3 100644
--- a/src/report.cpp
+++ b/src/report.cpp
@@ -161,7 +161,7 @@
                 enabled = newVal;
                 persistency = storeConfiguration();
             }
-            return true;
+            return 1;
         },
         [this](const auto&) { return enabled; });
     dbusIface->register_property_rw(
@@ -176,9 +176,11 @@
                     interval = newValT;
                     persistency = storeConfiguration();
                 }
-                return true;
+                return 1;
             }
-            return false;
+            throw sdbusplus::exception::SdBusError(
+                static_cast<int>(std::errc::invalid_argument),
+                "Invalid interval");
         },
         [this](const auto&) { return interval.count(); });
     dbusIface->register_property_rw(
@@ -186,7 +188,7 @@
         [this](bool newVal, const auto&) {
             if (newVal == persistency)
             {
-                return true;
+                return 1;
             }
             if (newVal)
             {
@@ -197,7 +199,7 @@
                 reportStorage.remove(fileName());
                 persistency = false;
             }
-            return true;
+            return 1;
         },
         [this](const auto&) { return persistency; });
 
@@ -251,7 +253,7 @@
             ReportManager::verifyReportUpdates(utils::toReportUpdates(newVal));
             setReportUpdates(utils::toReportUpdates(newVal));
             oldVal = newVal;
-            return true;
+            return 1;
         },
         [this](const auto&) { return utils::enumToString(reportUpdates); });
     dbusIface->register_method("Update", [this] {
diff --git a/src/trigger.cpp b/src/trigger.cpp
index 0b210ae..e84a389 100644
--- a/src/trigger.cpp
+++ b/src/trigger.cpp
@@ -50,7 +50,7 @@
                 [this](bool newVal, const auto&) {
                     if (newVal == persistent)
                     {
-                        return true;
+                        return 1;
                     }
                     if (newVal)
                     {
@@ -61,7 +61,7 @@
                         triggerStorage.remove(fileName);
                         persistent = false;
                     }
-                    return true;
+                    return 1;
                 },
                 [this](const auto&) { return persistent; });
 
@@ -97,7 +97,7 @@
                 sdbusplus::vtable::property_::emits_change,
                 [this](auto newVal, auto& oldVal) {
                     name = oldVal = newVal;
-                    return true;
+                    return 1;
                 },
                 [this](const auto&) { return name; });
 
