diff --git a/app/controllers/my_courses.php b/app/controllers/my_courses.php
index 9e8e0b634b68b16d8c3c4b0e0ce79c9758ea7c00..8205c12c743e0a1855bd7473d6b6a2f9ee14ced4 100644
--- a/app/controllers/my_courses.php
+++ b/app/controllers/my_courses.php
@@ -344,7 +344,10 @@ class MyCoursesController extends AuthenticatedController
         $semesters   = MyRealmModel::getSelectedSemesters($sem);
         $min_sem_key = min($semesters);
         $max_sem_key = max($semesters);
-        $courses     = MyRealmModel::getCourses($min_sem_key, $max_sem_key, compact('deputies_enabled'));
+        $courses     = MyRealmModel::getCourses($min_sem_key, $max_sem_key, [
+            'deputies_enabled' => $deputies_enabled,
+            'exactly'          => $semesters,
+        ]);
         foreach ($courses as $index => $course) {
             MyRealmModel::setObjectVisits($course, $GLOBALS['user']->id, $timestamp);
         }
@@ -1168,6 +1171,7 @@ class MyCoursesController extends AuthenticatedController
             'future'      => _('Aktuelles und nächstes Semester'),
             'last'        => _('Aktuelles und letztes Semester'),
             'lastandnext' => _('Letztes, aktuelles, nächstes Semester'),
+            'lastbutone'  => _('Aktuelles und vorletztes Semester'),
         ];
 
         if (Config::get()->MY_COURSES_ENABLE_ALL_SEMESTERS) {
diff --git a/lib/classes/MyRealmModel.php b/lib/classes/MyRealmModel.php
index 0279fe54ab89ce48462bc2de41c60d55989f777a..94bb30d8109e9c0029469e4f71fc6242e9951f56 100644
--- a/lib/classes/MyRealmModel.php
+++ b/lib/classes/MyRealmModel.php
@@ -163,16 +163,22 @@ class MyRealmModel
     public static function getCourses($min_sem_key, $max_sem_key, $params = [])
     {
         // init
-        $order_by          = $params['order_by'] ?? null;
-        $order             = $params['order'] ?? null;
-        $deputies_enabled  = $params['deputies_enabled'];
+        $order_by         = $params['order_by'] ?? null;
+        $order            = $params['order'] ?? null;
+        $deputies_enabled = $params['deputies_enabled'];
 
         $sem_data = Semester::getAllAsArray();
 
         $semester_ids = [];
         if (is_numeric($min_sem_key) && is_numeric($max_sem_key)) {
             foreach ($sem_data as $index => $data) {
-                if ($index >= $min_sem_key && $index <= $max_sem_key) {
+                if (
+                    $index >= $min_sem_key && $index <= $max_sem_key
+                    && (
+                        !isset($params['exactly'])
+                        || in_array($index, $params['exactly'])
+                    )
+                ) {
                     $semester_ids[] = $data['semester_id'] ?? '';
                 }
             }
@@ -244,7 +250,7 @@ class MyRealmModel
         }
 
         // Get the needed semester
-        if (!in_array($sem, ['', 'current', 'future', 'last', 'lastandnext'])) {
+        if (!in_array($sem, ['', 'current', 'future', 'last', 'lastandnext','lastbutone'])) {
             $semesters[] = Semester::getIndexById($sem);
         } else {
             switch ($sem) {
@@ -264,6 +270,10 @@ class MyRealmModel
                     $semesters[] = $current_sem;
                     $semesters[] = $max_sem;
                     break;
+                case 'lastbutone':
+                    $semesters[] = $current_sem - 2;
+                    $semesters[] = $current_sem;
+                    break;
                 default:
                     $semesters = array_keys($sem_data);
                     break;
@@ -287,7 +297,7 @@ class MyRealmModel
         $min_sem_key = min($semesters);
         $max_sem_key = max($semesters);
         $group_field = $params['group_field'];
-        $courses     = self::getCourses($min_sem_key, $max_sem_key, $params);
+        $courses     = self::getCourses($min_sem_key, $max_sem_key, $params + ['exactly' => $semesters]);
         $show_semester_name = UserConfig::get($GLOBALS['user']->id)->SHOWSEM_ENABLE;
         $sem_courses = [];