diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue b/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue
index be2d1530f328750e68e46aa6c9f2f8d6b03ae34a..bd12b7628d20fc0da74c8d72f275c3eb9c900bbc 100644
--- a/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue
+++ b/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue
@@ -67,7 +67,7 @@
 import CRUDIterator from "aleksis.core/components/generic/CRUDIterator.vue";
 import DateSelectFooter from "aleksis.core/components/generic/DateSelectFooter.vue";
 import DocumentationModal from "./documentation/DocumentationModal.vue";
-import { DateTime } from "luxon";
+import { DateTime, Interval } from "luxon";
 import { documentationsForCoursebook } from "./coursebook.graphql";
 import CoursebookFilters from "./CoursebookFilters.vue";
 import CoursebookLoader from "./CoursebookLoader.vue";
@@ -270,11 +270,27 @@ export default {
 
       return "documentation_" + nearestId.toISODate();
     },
+    // TODO: Improve Add empty but already queried days to docsByDay -> do not query them again
+    // docsByDay: {dt: [dt doc ...] ...}
+    assureDate(date) {
+      // find missing & fetch missing range
+      // date +- 5 days ?
+      const dateRange = Interval
+            .fromDateTimes(date.minus({ days: 3 }), date.plus({ days: 4 }))
+            .splitBy({ days: 1 })
+            .map((ts) => ts.start);
+      console.log('assureDate', dateRange.map((ts) => ts.toISODate()));
+      // look up in docsByDay
+      // sort missing and ask for first to last
+      // integrate into docsByDay
+
+    },
     gotoDate(date, scroll) {
       // show
       this.$router.replace({ hash: date })
       console.log('hash', this.$route.hash);
       // assure
+      this.assureDate(DateTime.fromISO(date));
       // scroll
     },
   },