diff --git a/template_helper.py b/template_helper.py
index 1fee370a167d70f362375d9221fb0de9f1639e2d..cfe252be18a56cf0a1f11b47dbc6825912f6d18e 100644
--- a/template_helper.py
+++ b/template_helper.py
@@ -156,6 +156,10 @@ def human_time(d):
 def rfc3339(d):
 	return d.strftime('%Y-%m-%dT%H:%M:%S+02:00')
 
+@app.template_filter()
+def time_offset(s):
+	return '%02d:%02d:%02d'%(s//3600, (s//60)%60, s%60)
+
 @app.template_filter()
 def rfc822(d):
 	return formatdate(mktime(d.timetuple()))
diff --git a/templates/feed.rss b/templates/feed.rss
index 4dd51930991a300ce1fb1f1fd9cf4503005cc2d5..25d078a3e17885c9e609df3fd2b7dfba29e6fbbf 100644
--- a/templates/feed.rss
+++ b/templates/feed.rss
@@ -12,7 +12,7 @@
 {%- if chapters|selectattr('lecture_id','equalto',item.id)|list %}
 <ul>
 {% for chapter in chapters|selectattr('lecture_id','equalto',item.id) %}
-<li>{{ '%02d:%02d:%02d'|format( chapter.time//3600, (chapter.time//60)%60, chapter.time%60) }}: {{ chapter.text }}</li>
+<li>{{ chapter.time|time_offset }}: {{ chapter.text }}</li>
 {% endfor %}
 </ul>
 {% endif %}
@@ -49,11 +49,11 @@
 	<dc:creator>{{ item.speaker|e }}</dc:creator>
 	{% endif %}
 	{% if item.video.duration > 0 %}
-	<itunes:duration>{{ item.video.duration }}</itunes:duration>
+	<itunes:duration>{{ item.video.duration|time_offset }}</itunes:duration>
 	{% endif %}
 	<psc:chapters xmlns:psc="http://podlove.org/simple-chapters" version="1.2">
 		{% for chapter in chapters|selectattr('lecture_id','equalto',item.id) %}
-		<psc:chapter start="{{ chapter.time }}" title="{{ chapter.text }}"/>
+		<psc:chapter start="{{ chapter.time|time_offset }}" title="{{ chapter.text }}"/>
 		{% endfor %}
 	</psc:chapters>
 	<enclosure url="{{ url_for('files', filename=item.video.path, _external=True) }}" length="{{ item.video.file_size }}" type="{{ format.mimetype }}"/>
diff --git a/templates/lecture.html b/templates/lecture.html
index f5c780c536504076a37f4bd731fcf80817b5cb4e..e3b8eb637324b0cfb3a5a67ee3de66cecb756e8d 100644
--- a/templates/lecture.html
+++ b/templates/lecture.html
@@ -55,7 +55,7 @@
 				{% for c in chapters|sort(attribute='time') %}
 				<tr>
 					<td>
-						<a class="chapterlink" href="{{url_for('lecture', course=course.handle, id=lecture.id, t=c['time'])}}" data-seek-time="{{c['time']}}">{{ '%02d:%02d:%02d'|format( c['time']//3600, (c['time']//60)%60, c['time']%60) }}</a>
+						<a class="chapterlink" href="{{url_for('lecture', course=course.handle, id=lecture.id, t=c['time'])}}" data-seek-time="{{c['time']}}">{{ c.time|time_offset }}</a>
 						<br>
 						{% if ismod() %}
 							{{ moderator_editor(['chapters',c.id,'time'],c['time'],true) }}
diff --git a/templates/macros.html b/templates/macros.html
index ea67c2a75544349d59f2664c1051fada3dac478e..70fed19e9dc75d3873d0a397f3ef12dbe8ba2e6e 100644
--- a/templates/macros.html
+++ b/templates/macros.html
@@ -358,7 +358,7 @@ $('#embedcodebtn').popover(
 	
 {% endmacro %}
 
-{% macro vtttime(time) %}{{ '%02d:%02d:%02d.000'|format( time//3600, (time//60)%60, time%60) }}{% endmacro %}
+{% macro vtttime(time) %}{{ time|time_offset }}.000{% endmacro %}
 
 {% macro stats_viewsperday(id, req, title, type="scatter", param=None, maxtraces=7) %}
 <script>