diff --git a/src/timer.rs b/src/timer.rs
index 2e4bb38a1f94b3d39c55efbc4a1ff961e0a9ec63..23463381776795fd6c18e384d5bdf418e85d5951 100644
--- a/src/timer.rs
+++ b/src/timer.rs
@@ -29,14 +29,14 @@ impl Timer {
 
     pub fn clock(&mut self, cycles: u8) {
         self.div_clock += cycles as u16;
-        if self.div_clock >= 256 {
+        while self.div_clock >= 256 {
             self.div = self.div.wrapping_add(1);
             self.div_clock -= 256;
         }
 
         if self.tima_enabled {
             self.tima_clock += cycles as u16;
-            if self.tima_clock >= self.tima_ratio {
+            while self.tima_clock >= self.tima_ratio {
                 if self.tima == 0xff {
                     self.int_tima = true;
                     self.tima = self.tma;