diff --git a/README.md b/README.md
index 5365349..cf7a287 100644
--- a/README.md
+++ b/README.md
@@ -51,10 +51,10 @@
 A summary of which cases the time can be set on BMC or HOST:
 Mode      | Owner | Set BMC Time  | Set Host Time
 --------- | ----- | ------------- | -------------------
-NTP       | BMC   | Not allowed   | Not allowed
+NTP       | BMC   | Fail to set   | Not allowed
 NTP       | HOST  | Not allowed   | Not allowed
-NTP       | SPLIT | Not allowed   | OK
-NTP       | BOTH  | Not allowed   | Not allowed
+NTP       | SPLIT | Fail to set   | OK
+NTP       | BOTH  | Fail to set   | Not allowed
 MANUAL    | BMC   | OK            | Not allowed
 MANUAL    | HOST  | Not allowed   | OK
 MANUAL    | SPLIT | OK            | OK
diff --git a/bmc_epoch.cpp b/bmc_epoch.cpp
index 4c8bf60..bb3872b 100644
--- a/bmc_epoch.cpp
+++ b/bmc_epoch.cpp
@@ -95,21 +95,15 @@
     /*
         Mode  | Owner | Set BMC Time
         ----- | ----- | -------------
-        NTP   | BMC   | Not allowed
+        NTP   | BMC   | Fail to set
         NTP   | HOST  | Not allowed
-        NTP   | SPLIT | Not allowed
-        NTP   | BOTH  | Not allowed
+        NTP   | SPLIT | Fail to set
+        NTP   | BOTH  | Fail to set
         MANUAL| BMC   | OK
         MANUAL| HOST  | Not allowed
         MANUAL| SPLIT | OK
         MANUAL| BOTH  | OK
     */
-    if (timeMode == Mode::NTP)
-    {
-        log<level::ERR>("Setting BmcTime with NTP mode is not allowed");
-        // TODO: throw NotAllowed exception
-        return 0;
-    }
     if (timeOwner == Owner::Host)
     {
         log<level::ERR>("Setting BmcTime with HOST owner is not allowed");
diff --git a/epoch_base.cpp b/epoch_base.cpp
index 09337de..dc21c67 100644
--- a/epoch_base.cpp
+++ b/epoch_base.cpp
@@ -47,7 +47,11 @@
     method.append(static_cast<int64_t>(usec.count()),
                   false, // relative
                   false); // user_interaction
-    bus.call_noreply(method);
+    auto reply = bus.call(method);
+    if (reply.is_method_error())
+    {
+        log<level::ERR>("Error in setting system time");
+    }
 }
 
 microseconds EpochBase::getTime() const
diff --git a/test/TestBmcEpoch.cpp b/test/TestBmcEpoch.cpp
index e268b9f..32592e6 100644
--- a/test/TestBmcEpoch.cpp
+++ b/test/TestBmcEpoch.cpp
@@ -82,17 +82,13 @@
 
 TEST_F(TestBmcEpoch, setElapsedNotAllowed)
 {
-    setTimeMode(Mode::NTP);
     auto epochNow = duration_cast<microseconds>(
         system_clock::now().time_since_epoch()).count();
-    // In NTP mode, setting time is not allowed
-    auto ret = bmcEpoch->elapsed(epochNow);
-    EXPECT_EQ(0, ret);
 
     // In Host owner, setting time is not allowed
     setTimeMode(Mode::Manual);
     setTimeOwner(Owner::Host);
-    ret = bmcEpoch->elapsed(epochNow);
+    auto ret = bmcEpoch->elapsed(epochNow);
     EXPECT_EQ(0, ret);
 }
 
