diff --git a/src/sbbs3/js_uifc.c b/src/sbbs3/js_uifc.c
index 73859ad91d5c40149187212bcfc53d50e4c4c795..f0883ef4a0a14230423c29b7a25a80d8d466a089 100644
--- a/src/sbbs3/js_uifc.c
+++ b/src/sbbs3/js_uifc.c
@@ -346,6 +346,7 @@ static JSBool js_list_ctx_constructor(JSContext *cx, uintN argc, jsval *arglist)
 		JS_ReportError(cx, "JS_SetPrivate failed");
 		return JS_FALSE;
 	}
+	p->bar = INT_MAX;
 	js_SyncResolve(cx, obj, NULL, js_uifc_list_class_properties, NULL, NULL, 0);
 #ifdef BUILD_JSDOCS
 	js_DescribeSyncObject(cx, obj, "Class used to retain UIFC list menu context", 317);
diff --git a/src/uifc/uifc32.c b/src/uifc/uifc32.c
index 2e1f9ac1af8a4a59524dba73619b5e943f4b3890..53caa23d1dbbc8cf1ae3f5a8fd9211fce2f5e207 100644
--- a/src/uifc/uifc32.c
+++ b/src/uifc/uifc32.c
@@ -927,11 +927,11 @@ int ulist(int mode, int left, int top, int width, int *cur, int *bar
 				(*bar)=opts-1;
 			if((*bar)<0)
 				(*bar)=0;
-			if((*cur)<(*bar))
-				(*cur)=(*bar);
 			i=(*cur)-(*bar);
 			if(i+(height-vbrdrsize-1)>=opts) {
 				(*bar)=(height-vbrdrsize);
+				if (*bar > *cur)
+					*bar = *cur;
 				i=(*cur)-(*bar)+1;
 			}
 		}