diff --git a/src/sbbs3/js_file.c b/src/sbbs3/js_file.c
index 57150086360b4fc697203ed21059b6051ca398b9..1600bb940ec607bbfa030a9831655e63c62c4d27 100644
--- a/src/sbbs3/js_file.c
+++ b/src/sbbs3/js_file.c
@@ -274,7 +274,7 @@ js_readbin(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
 	size_t		size=sizeof(DWORD);
 	private_t*	p;
 
-	*rval = JSVAL_NULL;
+	*rval = JSVAL_TO_INT(-1);
 
 	if((p=(private_t*)JS_GetPrivate(cx,obj))==NULL)
 		return(JS_FALSE);
@@ -287,16 +287,16 @@ js_readbin(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
 
 	switch(size) {
 		case sizeof(BYTE):
-			fread(&b,1,size,p->fp);
-			*rval = INT_TO_JSVAL(b);
+			if(fread(&b,1,size,p->fp)==size)
+				*rval = INT_TO_JSVAL(b);
 			break;
 		case sizeof(WORD):
-			fread(&w,1,size,p->fp);
-			*rval = INT_TO_JSVAL(w);
+			if(fread(&w,1,size,p->fp)==size)
+				*rval = INT_TO_JSVAL(w);
 			break;
 		case sizeof(DWORD):
-			fread(&l,1,size,p->fp);
-			*rval = INT_TO_JSVAL(l);
+			if(fread(&l,1,size,p->fp)==size)
+				*rval = INT_TO_JSVAL(l);
 			break;
 	}