diff --git a/biscuit/apps/chronos/templates/chronos/tt_day.html b/biscuit/apps/chronos/templates/chronos/tt_day.html
index 97aea6a0c71e2cf25aaeee8e6d4963f5c34fabe2..9f7e6f81756892d5ebe9eff1b2a73fcec94f006b 100644
--- a/biscuit/apps/chronos/templates/chronos/tt_day.html
+++ b/biscuit/apps/chronos/templates/chronos/tt_day.html
@@ -1,11 +1,11 @@
 <div class="col-sm">
  <ul class="list-group">
   <li class="list-group-item active">
-   {{ lesson_periods.0.period.get_weekday_display }}
+   {{ weekday_name }}
   </li>
  </ul>
  <div class="container">
-  {% for lesson_period in lesson_periods %}
+  {% for period_num, lesson_period in lesson_periods.items %}
    <div class="row">
     <div class="col-sm">
      {% include "chronos/tt_lesson.html" with lesson_period=lesson_period %}
diff --git a/biscuit/apps/chronos/templates/chronos/tt_week.html b/biscuit/apps/chronos/templates/chronos/tt_week.html
index dc9052adcace27643e2f5927e82e7cc2b6bec5cd..194081034a657f640a853823d9cf977c73868f14 100644
--- a/biscuit/apps/chronos/templates/chronos/tt_week.html
+++ b/biscuit/apps/chronos/templates/chronos/tt_week.html
@@ -47,7 +47,7 @@
   </div>
  
   {% for weekday, lesson_periods_day in lesson_periods.items %}
-   {% include "chronos/tt_day.html" with lesson_periods=lesson_periods_day %}
+   {% include "chronos/tt_day.html" with weekday_name=weekdays.weekday lesson_periods=lesson_periods_day %}
   {% endfor %}
  </div>
 {% endblock %}
diff --git a/biscuit/apps/chronos/views.py b/biscuit/apps/chronos/views.py
index 2530ae3a8fdc906a157dc609f85d7bf28a233467..8eaebfe4db4be55776e3ffe511ab98d92ebb8a4c 100644
--- a/biscuit/apps/chronos/views.py
+++ b/biscuit/apps/chronos/views.py
@@ -36,17 +36,35 @@ def timetable(request):
             pk=int(request.GET['room'])).name)
 
     per_day = {}
+    period_min, period_max = None, None
     for lesson_period in lesson_periods:
         per_day.setdefault(lesson_period.period.weekday,
-                           []).append(lesson_period)
+                           {})[lesson_period.period.period] = lesson_period
 
-    # Fill in weekdays without lessons (to get a compet timetable)
+        # Expand min and max lesson to later fill in empty lessons
+        if period_min is None or period_min > lesson_period.period.period:
+            period_min = lesson_period.period.period
+        if period_max is None or period_max < lesson_period.period.period:
+            period_max = lesson_period.period.period
+
+    # Fill in empty lessons
     for weekday_num in range(min(per_day.keys()), max(per_day.keys()) + 1):
+        # Fill in empty weekdays
         if weekday_num not in per_day.keys():
-            per_day[weekday_num] = []
+            per_day[weekday_num] = {}
+
+        # Fill in empty lessons on this workday
+        for period_num in range(period_min, period_max + 1):
+            if period_num not in per_day[weekday_num].keys():
+                per_day[weekday_num][period_num] = None
+
+        # Order this weekday by periods
+        per_day[weekday_num] = OrderedDict(
+            sorted(per_day[weekday_num].items()))
 
     context['lesson_periods'] = OrderedDict(sorted(per_day.items()))
     context['filter_descs'] = ', '.join(filter_descs)
     context['periods'] = TimePeriod.get_times_dict()
+    context['weekdays'] = dict(TimePeriod.WEEKDAY_CHOICES)
 
     return render(request, 'chronos/tt_week.html', context)