diff --git a/exec/load/avatar_lib.js b/exec/load/avatar_lib.js
index 0a1ce85d1aa46f6efb7014c4382461a6ce4ca448..02d8ee57b4a5e433cc77521be1a41ca0c10f602e 100644
--- a/exec/load/avatar_lib.js
+++ b/exec/load/avatar_lib.js
@@ -192,7 +192,7 @@ function read_netuser(username, netaddr)
 	return obj;
 }
 
-function read(usernum, username, netaddr)
+function read(usernum, username, netaddr, bbsid)
 {
 	var usernum = parseInt(usernum, 10);
 	var obj = cache_get(usernum >= 1 ? usernum : username, netaddr);
@@ -202,8 +202,17 @@ function read(usernum, username, netaddr)
 		obj = read_localuser(usernum);
 	else if(!netaddr)
 		obj = read_localuser(system.matchuser(username));
-	else
+	else {
 		obj = read_netuser(username, netaddr);
+		if(!obj && bbsid)
+			obj = read_netuser(username, bbsid);
+		if(!obj) {
+			var namehash = "md5:" + md5_calc(username);
+			obj = read_netuser(namehash, netaddr);
+			if(!obj && bbsid)
+				obj = read_netuser(namehash, bbsid);
+		}
+	}
 	cache_set(usernum >= 1 ? usernum : username, obj, netaddr);
 	return obj;
 }
@@ -262,7 +271,7 @@ function is_enabled(obj)
 // Uses Graphic.draw() at an absolute screen coordinate
 function draw(usernum, username, netaddr, above, right, top)
 {
-	var avatar = this.read(usernum, username, netaddr);
+	var avatar = this.read(usernum, username, netaddr, usernum);
 	if(!is_enabled(avatar))
 		return false;
 	return draw_bin(avatar.data, above, right, top);
@@ -297,7 +306,7 @@ function draw_bin(data, above, right, top)
 // Uses console.write() where-ever the cursor happens to be
 function show(usernum, username, netaddr)
 {
-	var avatar = this.read(usernum, username, netaddr);
+	var avatar = this.read(usernum, username, netaddr, usernum);
 	if(!is_enabled(avatar))
 		return false;
 	return show_bin(avatar.data);
diff --git a/exec/showmsgavatar.js b/exec/showmsgavatar.js
index b38162bac6476e365d02c053a77169867e6e5542..b09416f3715cb3297fe1acd907f999ab5ea130ba 100644
--- a/exec/showmsgavatar.js
+++ b/exec/showmsgavatar.js
@@ -50,7 +50,8 @@ if(!(bbs.msg_attr&bbs.mods.smbdefs.MSG_ANONYMOUS)) {
 	if(!bbs.mods.avatar_lib)
 		bbs.mods.avatar_lib = load({}, 'avatar_lib.js');
 	var options = get_options();
-	var success = bbs.mods.avatar_lib.draw(bbs.msg_from_ext, bbs.msg_from, bbs.msg_from_net
+	var success = bbs.mods.avatar_lib.draw(bbs.msg_from_ext || bbs.msg_from_bbsid
+		,bbs.msg_from, bbs.msg_from_net
 		,options.msghdr_draw_above, options.msghdr_draw_right
 		,options.msghdr_draw_top && bbs.msghdr_top_of_screen);
 	if(!success && bbs.smb_sub_code) {