diff --git a/controls/listbox.c b/controls/listbox.c
index 7e2cbdf..befb412 100644
--- a/controls/listbox.c
+++ b/controls/listbox.c
@@ -1229,6 +1229,31 @@
     LISTBOX_SetTopItem( wnd, descr, top, TRUE );
 }
 
+/***********************************************************************
+ *           LISTBOX_SetCaretIndex
+ *
+ * NOTES
+ *   index must be between 0 and descr->nb_items-1, or LB_ERR is returned.
+ *
+ */
+static LRESULT LISTBOX_SetCaretIndex( WND *wnd, LB_DESCR *descr, INT index,
+                                      BOOL fully_visible )
+{
+    INT oldfocus = descr->focus_item;          
+
+    if ((index < 0) || (index >= descr->nb_items)) return LB_ERR;
+    if (index == oldfocus) return LB_OKAY;
+    descr->focus_item = index;
+    if ((oldfocus != -1) && descr->caret_on && (descr->in_focus))
+        LISTBOX_RepaintItem( wnd, descr, oldfocus, ODA_FOCUS );
+
+    LISTBOX_MakeItemVisible( wnd, descr, index, fully_visible );
+    if (descr->caret_on && (descr->in_focus))
+        LISTBOX_RepaintItem( wnd, descr, index, ODA_FOCUS );
+
+    return LB_OKAY;
+}
+
 
 /***********************************************************************
  *           LISTBOX_SelectItemRange
@@ -1258,6 +1283,7 @@
             descr->items[i].selected = TRUE;
             LISTBOX_RepaintItem( wnd, descr, i, ODA_SELECT );
         }
+        LISTBOX_SetCaretIndex( wnd, descr, last, TRUE );
     }
     else  /* Turn selection off */
     {
@@ -1271,33 +1297,6 @@
     return LB_OKAY;
 }
 
-
-/***********************************************************************
- *           LISTBOX_SetCaretIndex
- *
- * NOTES
- *   index must be between 0 and descr->nb_items-1, or LB_ERR is returned.
- *
- */
-static LRESULT LISTBOX_SetCaretIndex( WND *wnd, LB_DESCR *descr, INT index,
-                                      BOOL fully_visible )
-{
-    INT oldfocus = descr->focus_item;          
-
-    if ((index < 0) || (index >= descr->nb_items)) return LB_ERR;
-    if (index == oldfocus) return LB_OKAY;
-    descr->focus_item = index;
-    if ((oldfocus != -1) && descr->caret_on && (descr->in_focus))
-        LISTBOX_RepaintItem( wnd, descr, oldfocus, ODA_FOCUS );
-
-    LISTBOX_MakeItemVisible( wnd, descr, index, fully_visible );
-    if (descr->caret_on && (descr->in_focus))
-        LISTBOX_RepaintItem( wnd, descr, index, ODA_FOCUS );
-
-    return LB_OKAY;
-}
-
-
 /***********************************************************************
  *           LISTBOX_SetSelection
  */
