void
 scroll_list_up()
 {
-       if(first_list_item <= 0)
+       if(first_list_item <= 0) {
+               if(curitem != 0) {
+                       curitem--;
+                       refresh_list();
+               }
                return;
+       }
 
        first_list_item -= scroll_speed;
        if(first_list_item < 0) {
 void
 scroll_list_down()
 {
-       if(first_list_item > db_n_items() - 2)
+       if(LAST_LIST_ITEM > db_n_items() - 2) {
+               if(curitem < LAST_LIST_ITEM) {
+                       curitem++;
+                       refresh_list();
+               }
                return;
+       }
 
        first_list_item += scroll_speed;
-       if(first_list_item >= db_n_items()) {
-               first_list_item = db_n_items() - 1;
+       if(LAST_LIST_ITEM > db_n_items() - 1) {
+               first_list_item = db_n_items() - LIST_LINES;
        }
        if(curitem < first_list_item) {
                curitem = first_list_item;