diff --git a/storaged/include/storaged.h b/storaged/include/storaged.h
index 0bdff74..591719e 100644
--- a/storaged/include/storaged.h
+++ b/storaged/include/storaged.h
@@ -302,7 +302,7 @@
         return mUidm.get_uid_io_stats();
     }
     std::map<uint64_t, std::vector<struct uid_record>> get_uid_records(
-            int hours, uint64_t threshold, bool force_report) {
+            double hours, uint64_t threshold, bool force_report) {
         return mUidm.dump(hours, threshold, force_report);
     }
     void update_uid_io_interval(int interval) {
diff --git a/storaged/include/storaged_uid_monitor.h b/storaged/include/storaged_uid_monitor.h
index f6250ae..031b7c4 100644
--- a/storaged/include/storaged_uid_monitor.h
+++ b/storaged/include/storaged_uid_monitor.h
@@ -92,7 +92,7 @@
     std::unordered_map<uint32_t, struct uid_info> get_uid_io_stats();
     // called by dumpsys
     std::map<uint64_t, std::vector<struct uid_record>> dump(
-        int hours, uint64_t threshold, bool force_report);
+        double hours, uint64_t threshold, bool force_report);
     // called by battery properties listener
     void set_charger_state(charger_stat_t stat);
     // called by storaged periodic_chore or dump with force_report
diff --git a/storaged/storaged_service.cpp b/storaged/storaged_service.cpp
index 8624b3b..9c8cbf0 100644
--- a/storaged/storaged_service.cpp
+++ b/storaged/storaged_service.cpp
@@ -88,7 +88,7 @@
         return PERMISSION_DENIED;
     }
 
-    int hours = 0;
+    double hours = 0;
     int time_window = 0;
     uint64_t threshold = 0;
     bool force_report = false;
@@ -97,7 +97,7 @@
         if (arg == String16("--hours")) {
             if (++i >= args.size())
                 break;
-            hours = stoi(String16::std_string(args[i]));
+            hours = stod(String16::std_string(args[i]));
             continue;
         }
         if (arg == String16("--time_window")) {
diff --git a/storaged/storaged_uid_monitor.cpp b/storaged/storaged_uid_monitor.cpp
index 2c20dba..3b893b5 100644
--- a/storaged/storaged_uid_monitor.cpp
+++ b/storaged/storaged_uid_monitor.cpp
@@ -150,7 +150,7 @@
 }
 
 std::map<uint64_t, std::vector<struct uid_record>> uid_monitor::dump(
-    int hours, uint64_t threshold, bool force_report)
+    double hours, uint64_t threshold, bool force_report)
 {
     if (force_report) {
         report();
@@ -162,7 +162,7 @@
     uint64_t first_ts = 0;
 
     if (hours != 0) {
-        first_ts = time(NULL) - (uint64_t)hours * HOUR_TO_SEC;
+        first_ts = time(NULL) - hours * HOUR_TO_SEC;
     }
 
     for (auto it = records.lower_bound(first_ts); it != records.end(); ++it) {
