diff --git a/res/values/strings.xml b/res/values/strings.xml
index 9f2fe1b..17bbfea 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -8765,15 +8765,15 @@
     <string name="data_remaining"><xliff:g name="bytes" example="2 GB">^1</xliff:g> left</string>
 
     <!-- Informational text about time left in billing cycle [CHAR LIMIT=60] -->
-    <string name="cycle_left_multiple_days"><xliff:g name="time" example="2d">%d</xliff:g> days left</string>
-
-    <!-- Informational text about time left in billing cycle [CHAR LIMIT=60] -->
     <plurals name="billing_cycle_days_left">
         <item quantity="one">%d day left</item>
         <item quantity="other">%d days left</item>
     </plurals>
 
     <!-- Informational text about time left in billing cycle [CHAR LIMIT=60] -->
+    <string name="billing_cycle_none_left">No time remaining</string>
+
+    <!-- Informational text about time left in billing cycle [CHAR LIMIT=60] -->
     <string name="billing_cycle_less_than_one_day_left">Less than 1 day left</string>
 
     <!-- Informational text about carrier and update time [CHAR LIMIT=30] -->
diff --git a/src/com/android/settings/datausage/DataUsageSummaryPreference.java b/src/com/android/settings/datausage/DataUsageSummaryPreference.java
index e8715aa..16b917a 100644
--- a/src/com/android/settings/datausage/DataUsageSummaryPreference.java
+++ b/src/com/android/settings/datausage/DataUsageSummaryPreference.java
@@ -185,18 +185,18 @@
     }
 
     private void updateCycleTimeText(PreferenceViewHolder holder) {
-        float daysLeft =
-                ((float) mCycleEndTimeMs - System.currentTimeMillis()) / MILLIS_IN_A_DAY;
-        if (daysLeft < 0) {
-            daysLeft = 0;
-        }
-
         TextView cycleTime = (TextView) holder.findViewById(R.id.cycle_left_time);
-        cycleTime.setText(
-                (daysLeft > 0 && daysLeft < 1)
-                ? getContext().getString(R.string.billing_cycle_less_than_one_day_left)
-                : getContext().getResources().getQuantityString(
-                        R.plurals.billing_cycle_days_left, (int) daysLeft, (int) daysLeft));
+
+        long millisLeft = mCycleEndTimeMs - System.currentTimeMillis();
+        if (millisLeft <= 0) {
+            cycleTime.setText(getContext().getString(R.string.billing_cycle_none_left));
+        } else {
+            int daysLeft = (int)(millisLeft / MILLIS_IN_A_DAY);
+            cycleTime.setText(daysLeft < 1
+                            ? getContext().getString(R.string.billing_cycle_less_than_one_day_left)
+                            : getContext().getResources().getQuantityString(
+                            R.plurals.billing_cycle_days_left, daysLeft, daysLeft));
+        }
     }
 
 
diff --git a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceTest.java b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceTest.java
index 638ee79..58e42a0 100644
--- a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceTest.java
@@ -179,7 +179,7 @@
     }
 
     @Test
-    public void testSetUsageInfo_cycleRemainingTimeNegativeDaysLeft_shouldDisplayZeroDays() {
+    public void testSetUsageInfo_cycleRemainingTimeNegativeDaysLeft_shouldDisplayNoneLeft() {
         final long cycleEnd = System.currentTimeMillis() - 1L;
         mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, DUMMY_CARRIER, 0 /* numPlans */,
                 new Intent());
@@ -187,7 +187,7 @@
         bindViewHolder();
         assertThat(mCycleTime.getVisibility()).isEqualTo(View.VISIBLE);
         assertThat(mCycleTime.getText()).isEqualTo(
-                mContext.getResources().getQuantityString(R.plurals.billing_cycle_days_left, 0, 0));
+                mContext.getString(R.string.billing_cycle_none_left));
     }
 
     @Test
