diff --git a/AKModel/models.py b/AKModel/models.py
index 6d48498990699fd87e8682cc840292cbc6191e1f..aa4d67030c3460b15c66542f2612997672188d51 100644
--- a/AKModel/models.py
+++ b/AKModel/models.py
@@ -600,6 +600,14 @@ class AKSlot(models.Model):
         """
         return self.start < other.end <= self.end or self.start <= other.start < self.end
 
+    def save(self, force_insert=False, force_update=False, using=None, update_fields=None):
+        # Make sure duration is not longer than the event
+        if update_fields is None or 'duration' in update_fields:
+            event_duration = self.event.end - self.event.start
+            event_duration_hours = event_duration.days * 24 + event_duration.seconds // 3600
+            self.duration = min(self.duration, event_duration_hours)
+        super().save(force_insert, force_update, using, update_fields)
+
 
 class AKOrgaMessage(models.Model):
     """
diff --git a/AKSubmission/forms.py b/AKSubmission/forms.py
index f7187adebe067dea3ae6b73df2c149c6e0ae7c07..bcfea280e2ebfc755a58fafec7056af4c0ae8216 100644
--- a/AKSubmission/forms.py
+++ b/AKSubmission/forms.py
@@ -86,7 +86,7 @@ class AKForm(AvailabilitiesFormMixin, forms.ModelForm):
             duration = float(duration.replace(",", "."))
 
         try:
-            float(duration)
+            duration = float(duration)
         except ValueError as exc:
             raise ValidationError(
                 _('"%(duration)s" is not a valid duration'),