Fix gyro reading code when it misses cycles

Change-Id: Ife59545495709eda7a9e4c9961a1b78125cd975b
diff --git a/aos/common/time_test.cc b/aos/common/time_test.cc
index c6ddd0c..008b3cf 100644
--- a/aos/common/time_test.cc
+++ b/aos/common/time_test.cc
@@ -188,6 +188,30 @@
   Time t2 = Time::InMS(-254971);
   EXPECT_EQ(-255, t2.sec());
   EXPECT_EQ(Time::kNSecInSec - 971000000, t2.nsec());
+
+  Time t3 = Time::InMS(-1000);
+  EXPECT_EQ(-1, t3.sec());
+  EXPECT_EQ(0, t3.nsec());
+
+  Time t4 = Time::InMS(1000);
+  EXPECT_EQ(1, t4.sec());
+  EXPECT_EQ(0, t4.nsec());
+
+  Time t5 = Time::InMS(1001);
+  EXPECT_EQ(1, t5.sec());
+  EXPECT_EQ(Time::kNSecInMSec, t5.nsec());
+
+  Time t6 = Time::InMS(-1001);
+  EXPECT_EQ(-2, t6.sec());
+  EXPECT_EQ(Time::kNSecInSec - Time::kNSecInMSec, t6.nsec());
+
+  Time t7 = Time::InMS(-999);
+  EXPECT_EQ(-1, t7.sec());
+  EXPECT_EQ(Time::kNSecInMSec, t7.nsec());
+
+  Time t8 = Time::InMS(999);
+  EXPECT_EQ(0, t8.sec());
+  EXPECT_EQ(Time::kNSecInSec - Time::kNSecInMSec, t8.nsec());
 }
 
 TEST(TimeTest, ToMSec) {
@@ -228,6 +252,10 @@
             MACRO_DARG(Time(970, Time::kNSecInSec - 973).ToNSec()));
 }
 
+TEST(TimeTest, FromRate) {
+  EXPECT_EQ(MACRO_DARG(Time(0, Time::kNSecInSec / 100)), Time::FromRate(100));
+}
+
 }  // namespace testing
 }  // namespace time
 }  // namespace aos