diff --git a/policy_manager/fake_updater_provider.h b/policy_manager/fake_updater_provider.h
index 17060ce..0413eb5 100644
--- a/policy_manager/fake_updater_provider.h
+++ b/policy_manager/fake_updater_provider.h
@@ -5,6 +5,8 @@
 #ifndef CHROMEOS_PLATFORM_UPDATE_ENGINE_POLICY_MANAGER_FAKE_UPDATER_PROVIDER_H_
 #define CHROMEOS_PLATFORM_UPDATE_ENGINE_POLICY_MANAGER_FAKE_UPDATER_PROVIDER_H_
 
+#include <string>
+
 #include "update_engine/policy_manager/fake_variable.h"
 #include "update_engine/policy_manager/updater_provider.h"
 
@@ -15,6 +17,10 @@
  public:
   FakeUpdaterProvider() {}
 
+  virtual FakeVariable<base::Time>* var_updater_started_time() override {
+    return &var_updater_started_time_;
+  }
+
   virtual FakeVariable<base::Time>* var_last_checked_time() override {
     return &var_last_checked_time_;
   }
@@ -56,6 +62,8 @@
   }
 
  private:
+  FakeVariable<base::Time> var_updater_started_time_{
+      "updater_started_time", kVariableModePoll};
   FakeVariable<base::Time> var_last_checked_time_{
     "last_checked_time", kVariableModePoll};
   FakeVariable<base::Time> var_update_completed_time_{
diff --git a/policy_manager/real_updater_provider.cc b/policy_manager/real_updater_provider.cc
index dbfae87..9bdb45a 100644
--- a/policy_manager/real_updater_provider.cc
+++ b/policy_manager/real_updater_provider.cc
@@ -8,8 +8,8 @@
 
 #include <string>
 
-#include <base/time/time.h>
 #include <base/strings/stringprintf.h>
+#include <base/time/time.h>
 #include <chromeos/dbus/service_constants.h>
 
 #include "update_engine/clock_interface.h"
@@ -314,6 +314,8 @@
 
 RealUpdaterProvider::RealUpdaterProvider(SystemState* system_state)
   : system_state_(system_state),
+    var_updater_started_time_("updater_started_time",
+                              system_state->clock()->GetWallclockTime()),
     var_last_checked_time_(
         new LastCheckedTimeVariable("last_checked_time", system_state_)),
     var_update_completed_time_(
diff --git a/policy_manager/real_updater_provider.h b/policy_manager/real_updater_provider.h
index e4b308e..619d5ab 100644
--- a/policy_manager/real_updater_provider.h
+++ b/policy_manager/real_updater_provider.h
@@ -7,6 +7,7 @@
 
 #include <base/memory/scoped_ptr.h>
 
+#include "update_engine/policy_manager/generic_variables.h"
 #include "update_engine/policy_manager/updater_provider.h"
 #include "update_engine/system_state.h"
 
@@ -26,6 +27,10 @@
   // Initializes the provider and returns whether it succeeded.
   bool Init() { return true; }
 
+  virtual Variable<base::Time>* var_updater_started_time() override {
+    return &var_updater_started_time_;
+  }
+
   virtual Variable<base::Time>* var_last_checked_time() override {
     return var_last_checked_time_.get();
   }
@@ -70,7 +75,8 @@
   // A pointer to the update engine's system state aggregator.
   chromeos_update_engine::SystemState* system_state_;
 
-  // Pointers to all variable implementations.
+  // Variable implementations.
+  ConstCopyVariable<base::Time> var_updater_started_time_;
   scoped_ptr<Variable<base::Time>> var_last_checked_time_;
   scoped_ptr<Variable<base::Time>> var_update_completed_time_;
   scoped_ptr<Variable<double>> var_progress_;
diff --git a/policy_manager/real_updater_provider_unittest.cc b/policy_manager/real_updater_provider_unittest.cc
index 1f8f86f..e779456 100644
--- a/policy_manager/real_updater_provider_unittest.cc
+++ b/policy_manager/real_updater_provider_unittest.cc
@@ -63,7 +63,7 @@
 class PmRealUpdaterProviderTest : public ::testing::Test {
  protected:
   virtual void SetUp() {
-    fake_sys_state_.set_clock(&fake_clock_);
+    fake_clock_ = fake_sys_state_.fake_clock();
     provider_.reset(new RealUpdaterProvider(&fake_sys_state_));
     PMTEST_ASSERT_NOT_NULL(provider_.get());
     // Check that provider initializes corrrectly.
@@ -101,16 +101,25 @@
     EXPECT_CALL(*fake_sys_state_.mock_update_attempter(),
                 GetBootTimeAtUpdate(_))
         .WillOnce(DoAll(SetArgPointee<0>(kUpdateBootTime), Return(true)));
-    fake_clock_.SetBootTime(kCurrBootTime);
-    fake_clock_.SetWallclockTime(kCurrWallclockTime);
+    fake_clock_->SetBootTime(kCurrBootTime);
+    fake_clock_->SetWallclockTime(kCurrWallclockTime);
     return kCurrWallclockTime - kDurationSinceUpdate;
   }
 
   FakeSystemState fake_sys_state_;
-  FakeClock fake_clock_;
+  FakeClock* fake_clock_;  // Short for fake_sys_state_.fake_clock()
   scoped_ptr<RealUpdaterProvider> provider_;
 };
 
+TEST_F(PmRealUpdaterProviderTest, UpdaterStartedTimeIsWallclockTime) {
+  fake_clock_->SetWallclockTime(Time::FromDoubleT(123.456));
+  fake_clock_->SetMonotonicTime(Time::FromDoubleT(456.123));
+  // Run SetUp again to re-setup the provider under test to use these values.
+  SetUp();
+  PmTestUtils::ExpectVariableHasValue(Time::FromDoubleT(123.456),
+                                      provider_->var_updater_started_time());
+}
+
 TEST_F(PmRealUpdaterProviderTest, GetLastCheckedTimeOkay) {
   EXPECT_CALL(*fake_sys_state_.mock_update_attempter(),
               GetStatus(_, _, _, _, _))
diff --git a/policy_manager/updater_provider.h b/policy_manager/updater_provider.h
index 85074f6..f9a4bff 100644
--- a/policy_manager/updater_provider.h
+++ b/policy_manager/updater_provider.h
@@ -31,6 +31,10 @@
  public:
   virtual ~UpdaterProvider() {}
 
+  // A variable returning the timestamp when the update engine was started in
+  // wallclock time.
+  virtual Variable<base::Time>* var_updater_started_time() = 0;
+
   // A variable returning the last update check time.
   virtual Variable<base::Time>* var_last_checked_time() = 0;
 
