diff --git a/src/sbbs3/js_system.c b/src/sbbs3/js_system.c
index 8542e05a153d3c9acf13bb398b7f579d4b7afe98..1739fe9d8e05419c79bdc9ee5916d660bf576d4a 100644
--- a/src/sbbs3/js_system.c
+++ b/src/sbbs3/js_system.c
@@ -99,6 +99,7 @@ static JSBool js_system_get(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
 {
 	char		str[128];
     jsint       tiny;
+	ulong		val;
 	scfg_t*		cfg;
 
 	if((cfg=(scfg_t*)JS_GetPrivate(cx,obj))==NULL)
@@ -151,7 +152,11 @@ static JSBool js_system_get(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
 			*vp = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, lastuseron));
 			break;
 		case SYS_PROP_FREEDISKSPACE:
-			*vp = INT_TO_JSVAL(getfreediskspace(cfg->temp_dir));
+			val = getfreediskspace(cfg->temp_dir);
+			if(INT_FITS_IN_JSVAL(val) && !(val&0x80000000))
+				*vp = INT_TO_JSVAL(val);
+			else
+	            JS_NewDoubleValue(cx, val, vp);
 			break;
 
 		case SYS_PROP_NEW_PASS: