diff --git a/src/ds323x/datetime.rs b/src/ds323x/datetime.rs
index a54d999..2f7a902 100644
--- a/src/ds323x/datetime.rs
+++ b/src/ds323x/datetime.rs
@@ -137,7 +137,7 @@ where
     }
 
     fn set_day(&mut self, day: u8) -> Result<(), Self::Error> {
-        if day < 1 || day > 7 {
+        if day < 1 || day > 31 {
             return Err(Error::InvalidInputData);
         }
         self.iface.write_register(Register::DOM, day)
diff --git a/tests/datetime.rs b/tests/datetime.rs
index 6e81bfc..e8c7a70 100644
--- a/tests/datetime.rs
+++ b/tests/datetime.rs
@@ -157,7 +157,7 @@ mod day {
     use super::*;
     get_param_test!(get, get_day, DOM, 1, 1);
     set_param_test!(set, set_day, DOM, 1, 1);
-    set_invalid_param_range_test!(invalid, set_day, 0, 8);
+    set_invalid_param_range_test!(invalid, set_day, 0, 32);
 }
 
 mod month {