diff --git a/app/classes/Framadate/Services/AdminPollService.php b/app/classes/Framadate/Services/AdminPollService.php
index e86bbb8b0314e51148ebe67e90890ad9464dc22d..7604082fb86941f32e05aa398c47c486d6ae58b0 100644
--- a/app/classes/Framadate/Services/AdminPollService.php
+++ b/app/classes/Framadate/Services/AdminPollService.php
@@ -33,10 +33,16 @@ class AdminPollService {
 
     function updatePoll($poll) {
         global $config;
-        if ($poll->end_date > $poll->creation_date) {
-            return $this->pollRepository->update($poll);
+
+        $end_date = strtotime($poll->end_date);
+
+        if ($end_date < strtotime($poll->creation_date)) {
+            $poll->end_date = $poll->creation_date;
+        } elseif ($end_date > $this->pollService->maxExpiryDate()) {
+            $poll->end_date = utf8_encode(strftime('%Y-%m-%d', $this->pollService->maxExpiryDate()));
         }
-            return false;
+
+        return $this->pollRepository->update($poll);
     }
 
     /**