diff --git a/policy_manager/fake_updater_provider.h b/policy_manager/fake_updater_provider.h
index 0413eb5..c9fbdc6 100644
--- a/policy_manager/fake_updater_provider.h
+++ b/policy_manager/fake_updater_provider.h
@@ -61,23 +61,30 @@
     return &var_cellular_enabled_;
   }
 
+  virtual FakeVariable<unsigned int>*
+      var_consecutive_failed_update_checks() override {
+    return &var_consecutive_failed_update_checks_;
+  }
+
  private:
   FakeVariable<base::Time> var_updater_started_time_{
       "updater_started_time", kVariableModePoll};
   FakeVariable<base::Time> var_last_checked_time_{
-    "last_checked_time", kVariableModePoll};
+      "last_checked_time", kVariableModePoll};
   FakeVariable<base::Time> var_update_completed_time_{
-    "update_completed_time", kVariableModePoll};
+      "update_completed_time", kVariableModePoll};
   FakeVariable<double> var_progress_{"progress", kVariableModePoll};
   FakeVariable<Stage> var_stage_{"stage", kVariableModePoll};
   FakeVariable<std::string> var_new_version_{"new_version", kVariableModePoll};
   FakeVariable<size_t> var_payload_size_{"payload_size", kVariableModePoll};
   FakeVariable<std::string> var_curr_channel_{
-    "curr_channel", kVariableModePoll};
+      "curr_channel", kVariableModePoll};
   FakeVariable<std::string> var_new_channel_{"new_channel", kVariableModePoll};
   FakeVariable<bool> var_p2p_enabled_{"p2p_enabled", kVariableModePoll};
   FakeVariable<bool> var_cellular_enabled_{
-    "cellular_enabled", kVariableModePoll};
+      "cellular_enabled", kVariableModePoll};
+  FakeVariable<unsigned int> var_consecutive_failed_update_checks_{
+      "consecutive_failed_update_checks", kVariableModePoll};
 
   DISALLOW_COPY_AND_ASSIGN(FakeUpdaterProvider);
 };
diff --git a/policy_manager/real_updater_provider.cc b/policy_manager/real_updater_provider.cc
index 9bdb45a..bc1350b 100644
--- a/policy_manager/real_updater_provider.cc
+++ b/policy_manager/real_updater_provider.cc
@@ -309,6 +309,21 @@
   DISALLOW_COPY_AND_ASSIGN(BooleanPrefVariable);
 };
 
+// A variable returning the number of consecutive failed update checks.
+class ConsecutiveFailedUpdateChecksVariable :
+    public UpdaterVariableBase<unsigned int> {
+ public:
+  using UpdaterVariableBase<unsigned int>::UpdaterVariableBase;
+
+ private:
+  virtual const unsigned int* GetValue(TimeDelta /* timeout */,
+                                       string* /* errmsg */) override {
+    return new unsigned int(
+        system_state()->update_attempter()->consecutive_failed_update_checks());
+  }
+
+  DISALLOW_COPY_AND_ASSIGN(ConsecutiveFailedUpdateChecksVariable);
+};
 
 // RealUpdaterProvider methods.
 
@@ -335,6 +350,9 @@
         new BooleanPrefVariable(
             "cellular_enabled", system_state_,
             chromeos_update_engine::kPrefsUpdateOverCellularPermission,
-            false)) {}
+            false)),
+    var_consecutive_failed_update_checks_(
+        new ConsecutiveFailedUpdateChecksVariable(
+            "consecutive_failed_update_checks", system_state_)) {}
 
 }  // namespace chromeos_policy_manager
diff --git a/policy_manager/real_updater_provider.h b/policy_manager/real_updater_provider.h
index 619d5ab..22b9e0f 100644
--- a/policy_manager/real_updater_provider.h
+++ b/policy_manager/real_updater_provider.h
@@ -71,6 +71,11 @@
     return var_cellular_enabled_.get();
   }
 
+  virtual Variable<unsigned int>*
+      var_consecutive_failed_update_checks() override {
+    return var_consecutive_failed_update_checks_.get();
+  }
+
  private:
   // A pointer to the update engine's system state aggregator.
   chromeos_update_engine::SystemState* system_state_;
@@ -87,6 +92,7 @@
   scoped_ptr<Variable<std::string>> var_new_channel_;
   scoped_ptr<Variable<bool>> var_p2p_enabled_;
   scoped_ptr<Variable<bool>> var_cellular_enabled_;
+  scoped_ptr<Variable<unsigned int>> var_consecutive_failed_update_checks_;
 
   DISALLOW_COPY_AND_ASSIGN(RealUpdaterProvider);
 };
diff --git a/policy_manager/real_updater_provider_unittest.cc b/policy_manager/real_updater_provider_unittest.cc
index e779456..dd6fb57 100644
--- a/policy_manager/real_updater_provider_unittest.cc
+++ b/policy_manager/real_updater_provider_unittest.cc
@@ -445,4 +445,13 @@
   PmTestUtils::ExpectVariableNotSet(provider_->var_update_completed_time());
 }
 
+TEST_F(PmRealUpdaterProviderTest, GetConsecutiveFailedUpdateChecks) {
+  const unsigned int kNumFailedChecks = 3;
+  EXPECT_CALL(*fake_sys_state_.mock_update_attempter(),
+              consecutive_failed_update_checks())
+      .WillRepeatedly(Return(kNumFailedChecks));
+  PmTestUtils::ExpectVariableHasValue(
+      kNumFailedChecks, provider_->var_consecutive_failed_update_checks());
+}
+
 }  // namespace chromeos_policy_manager
diff --git a/policy_manager/updater_provider.h b/policy_manager/updater_provider.h
index f9a4bff..fa5f48a 100644
--- a/policy_manager/updater_provider.h
+++ b/policy_manager/updater_provider.h
@@ -74,6 +74,9 @@
   // A variable indicating whether updates are allowed over a cellular network.
   virtual Variable<bool>* var_cellular_enabled() = 0;
 
+  // A variable returning the number of consecutive failed update checks.
+  virtual Variable<unsigned int>* var_consecutive_failed_update_checks() = 0;
+
  protected:
   UpdaterProvider() {}
 
diff --git a/update_attempter.cc b/update_attempter.cc
index 891cc96..7df18b1 100644
--- a/update_attempter.cc
+++ b/update_attempter.cc
@@ -978,6 +978,15 @@
     // If the request is not an event, then it's the update-check.
     if (!omaha_request_action->IsEvent()) {
       http_response_code_ = omaha_request_action->GetHTTPResponseCode();
+
+      // Record the number of consecutive failed update checks.
+      if (http_response_code_ == kHttpResponseInternalServerError ||
+          http_response_code_ == kHttpResponseServiceUnavailable) {
+        consecutive_failed_update_checks_++;
+      } else {
+        consecutive_failed_update_checks_ = 0;
+      }
+
       // Forward the server-dictated poll interval to the update check
       // scheduler, if any.
       if (update_check_scheduler_) {
diff --git a/update_attempter.h b/update_attempter.h
index 311a918..c83f121 100644
--- a/update_attempter.h
+++ b/update_attempter.h
@@ -202,6 +202,11 @@
   // This will return an empty string otherwise.
   std::string const& GetPrevVersion() const { return prev_version_; }
 
+  // Returns the nubmer of consecutive failed update checks.
+  virtual unsigned int consecutive_failed_update_checks() const {
+    return consecutive_failed_update_checks_;
+  }
+
  private:
   // Update server URL for automated lab test.
   static const char* const kTestUpdateUrl;
@@ -457,6 +462,10 @@
   // ignored (nor is it being written), which is useful for testing situations.
   std::string update_completed_marker_;
 
+  // The number of consecutive failed update checks. Needed for calculating the
+  // next update check interval.
+  unsigned int consecutive_failed_update_checks_ = 0;
+
   DISALLOW_COPY_AND_ASSIGN(UpdateAttempter);
 };
 
diff --git a/update_attempter_mock.h b/update_attempter_mock.h
index 29e46bc..d2bc447 100644
--- a/update_attempter_mock.h
+++ b/update_attempter_mock.h
@@ -28,6 +28,8 @@
                                int64_t* new_size));
 
   MOCK_METHOD1(GetBootTimeAtUpdate, bool(base::Time* out_boot_time));
+
+  MOCK_CONST_METHOD0(consecutive_failed_update_checks, unsigned int(void));
 };
 
 }  // namespace chromeos_update_engine
