--- /dev/null
+# HG changeset patch
+# Parent 054c3747b6957662fabfa7837ac78952d50be72c
+
+diff -r 054c3747b695 grical/events/models.py
+--- a/grical/events/models.py Tue Aug 27 15:16:13 2013 +0200
++++ b/grical/events/models.py Sun Dec 01 23:04:05 2013 +0100
+@@ -1116,12 +1116,12 @@
+ + unicode(self.id) + u'@' + \
+ Site.objects.get_current().domain
+ # calculate DTEND
+- if self.enddate and self.enddate != self.startdate:
++ if (self.enddate and self.enddate != self.startdate) or (self.endtime and self.endtime != self.starttime):
+ # rfc2445 (iCalendar) indicates that:
+ # - DTEND can be omitted when equals DTSTART
+ # - DTEND specifies the non-inclusive end of the event
+- enddate = self.enddate + datetime.timedelta(days=1)
+ if self.endtime:
++ enddate = self.enddate if self.enddate else self.startdate
+ date_time = datetime.datetime.combine(
+ enddate, self.endtime )
+ if self.timezone:
+@@ -1130,7 +1130,7 @@
+ date_time = loc_dt.astimezone( pytz.utc )
+ vevent.add('DTEND').value = date_time
+ else:
+- vevent.add('DTEND').value = enddate
++ vevent.add('DTEND').value = self.enddate + datetime.timedelta(days=1)
+ # calculate DESCRIPTION
+ if self.description: vevent.add('DESCRIPTION').value = self.description
+ # see rfc5545 3.8.7.2. Date-Time Stamp