diff --git a/src/main/java/org/olat/course/nodes/livestream/manager/LIveStreamServiceImpl.java b/src/main/java/org/olat/course/nodes/livestream/manager/LIveStreamServiceImpl.java
index ff9ec5380504bc9e1a6068f010a1a415be349a0a..e209cc1bb3f39a9d9ef98769053c328ae60e1a90 100644
--- a/src/main/java/org/olat/course/nodes/livestream/manager/LIveStreamServiceImpl.java
+++ b/src/main/java/org/olat/course/nodes/livestream/manager/LIveStreamServiceImpl.java
@@ -19,6 +19,9 @@
  */
 package org.olat.course.nodes.livestream.manager;
 
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.ZoneId;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
@@ -52,15 +55,29 @@ public class LIveStreamServiceImpl implements LiveStreamService {
 	public List<? extends LiveStreamEvent> getRunningEvents(CourseCalendars calendars, int bufferBeforeMin,
 			int bufferAfterMin) {
 		Date now = new Date();
+
+		Calendar cFromStartOfDay = Calendar.getInstance();
+		cFromStartOfDay.setTime(now);
+		int year = cFromStartOfDay.get(Calendar.YEAR);
+		int month = cFromStartOfDay.get(Calendar.MONTH);
+		int day = cFromStartOfDay.get(Calendar.DATE);
+		cFromStartOfDay.set(year, month, day - 1, 0, 0, 0);
+		Date fromStartOfDay = cFromStartOfDay.getTime();
+		
 		Calendar cFrom = Calendar.getInstance();
 		cFrom.setTime(now);
 		cFrom.add(Calendar.MINUTE, -bufferAfterMin);
 		Date from = cFrom.getTime();
+		
 		Calendar cTo = Calendar.getInstance();
 		cTo.setTime(now);
 		cTo.add(Calendar.MINUTE, bufferBeforeMin);
 		Date to = cTo.getTime();
-		return getLiveStreamEvents(calendars, from, to);
+		
+		// Use start of day to get all day events as well.
+		return getLiveStreamEvents(calendars, fromStartOfDay, to).stream()
+				.filter(startedFilter(from))
+				.collect(Collectors.toList());
 	}
 	
 	@Override
@@ -79,6 +96,12 @@ public class LIveStreamServiceImpl implements LiveStreamService {
 				.filter(notStartedFilter(from))
 				.collect(Collectors.toList());
 	}
+	
+	private Predicate<LiveStreamEvent> startedFilter(Date from) {
+		return (LiveStreamEvent e) -> {
+			return e.getBegin().before(from);
+			};
+	}
 
 	private Predicate<LiveStreamEvent> notStartedFilter(Date from) {
 		return (LiveStreamEvent e) -> {
@@ -105,6 +128,7 @@ public class LIveStreamServiceImpl implements LiveStreamService {
 				}
 			}
 		}
+		
 		return liveStreamEvents;
 	}
 	
@@ -115,9 +139,12 @@ public class LIveStreamServiceImpl implements LiveStreamService {
 	private LiveStreamEventImpl toLiveStreamEvent(KalendarEvent event, boolean timeOnly) {
 		LiveStreamEventImpl liveStreamEvent = new LiveStreamEventImpl();
 		liveStreamEvent.setId(event.getID());
-		liveStreamEvent.setBegin(event.getBegin());
-		liveStreamEvent.setEnd(event.getEnd());
 		liveStreamEvent.setAllDayEvent(event.isAllDayEvent());
+		liveStreamEvent.setBegin(event.getBegin());
+		Date end = event.isAllDayEvent()
+				? getEndOfDay(event.getEnd())
+				: event.getEnd();
+		liveStreamEvent.setEnd(end);
 		liveStreamEvent.setLiveStreamUrl(event.getLiveStreamUrl());
 		if (!timeOnly) {
 			liveStreamEvent.setSubject(event.getSubject());
@@ -127,4 +154,18 @@ public class LIveStreamServiceImpl implements LiveStreamService {
 		return liveStreamEvent;
 	}
 
+	private Date getEndOfDay(Date date) {
+		LocalDateTime localDateTime = dateToLocalDateTime(date);
+		LocalDateTime endOfDay = localDateTime.with(LocalTime.MAX);
+		return localDateTimeToDate(endOfDay);
+	}
+
+	private LocalDateTime dateToLocalDateTime(Date date) {
+		return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
+	}
+
+	private Date localDateTimeToDate(LocalDateTime localDateTime) {
+		return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
+	}
+
 }