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] {
