diff --git a/web/lib/msgslib.ssjs b/web/lib/msgslib.ssjs
index da9ae0565670ff566f81ca5d1b15fc3c2080b30f..089eecf09085a7ea0d04522c57d5fb5f29980af0 100644
--- a/web/lib/msgslib.ssjs
+++ b/web/lib/msgslib.ssjs
@@ -76,20 +76,31 @@ function find_np_message(offset,next)
 {
 	/* "Next" actually means the one before this one as msgs reverses everything */
 	var step=-1;
-	var hdr=null;
 	var	idx;
+	var last_offset;
 
 	if(!next)
 		step=1;
-
-	for(last_offset=offset+step;(hdr=msgbase.get_msg_header(true,last_offset))!=null;last_offset+=step) {
-		if(hdr.attr&MSG_DELETE)
+write("offset: "+offset+" step: "+step+"<BR>");
+	for(last_offset=parseInt(offset)+step;last_offset>0 && (idx=msgbase.get_msg_index(true,last_offset))!=null;last_offset+=step) {
+write("checking: "+last_offset+"<BR>");
+		if(idx.attr&MSG_DELETE)
 			continue;
-		if(sub!=mail)
-			return(last_offset);
-		if((idx=msgbase.get_msg_index(true,last_offset))==null || idx.to!=user.number)
+		if(sub!='mail')
+			return(idx.number);
+		if(idx.to!=user.number)
+			continue;
+		return(idx.number);
+	}
+	return(undefined);
+}
+
+function get_msg_offset(number)
+{
+	for(last_offset=0; (hdr=msgbase.get_msg_header(true,last_offset)) != null;last_offset++) {
+		if((idx=msgbase.get_msg_index(true,last_offset))==null)
 			continue;
-		return(hdr.number);
+		return(idx.number);
 	}
 	return(undefined);
 }