--- menu.c	2018/03/18 12:01:09	4.69
+++ menu.c	2018/03/24 11:43:40
@@ -3010,6 +3010,7 @@
      Clear();
      GetRecordingsSortMode(DirectoryName());
      Recordings->Sort();
+     cMenuRecordingItem *CurrentItem = NULL;
      cMenuRecordingItem *LastItem = NULL;
      for (const cRecording *Recording = Recordings->First(); Recording; Recording = Recordings->Next(Recording)) {
          if ((!filter || filter->Filter(Recording)) && (!base || (strstr(Recording->Name(), base) == Recording->Name() && Recording->Name()[strlen(base)] == FOLDERDELIMCHAR))) {
@@ -3035,15 +3036,16 @@
             if (LastItem || LastDir) {
                if (*path) {
                   if (strcmp(path, Recording->Folder()) == 0)
-                     SetCurrent(LastDir ? LastDir : LastItem);
+                     CurrentItem = LastDir ? LastDir : LastItem;
                   }
                else if (CurrentRecording && strcmp(CurrentRecording, Recording->FileName()) == 0)
-                  SetCurrent(LastDir ? LastDir : LastItem);
+                  CurrentItem = LastDir ? LastDir : LastItem;
                }
             if (LastDir)
                LastDir->IncrementCounter(Recording->IsNew());
             }
          }
+     SetCurrent(CurrentItem);
      if (Current() < 0)
         SetCurrent(Get(current)); // last resort, in case the recording was deleted
      SetMenuSortMode(RecordingsSortMode == rsmName ? msmName : msmTime);
--- osdbase.c	2018/03/06 10:38:18	4.4
+++ osdbase.c	2018/03/24 11:47:45
@@ -330,7 +330,8 @@
 {
   if (marked >= 0)
      SetStatus(NULL);
-  lastOffset = (current > first) ? current - first : 0;
+  if (current >= 0)
+     lastOffset = (current > first) ? current - first : 0;
   first = 0;
   current = marked = -1;
   cList<cOsdItem>::Clear();
