diff --git a/exec/ircd.js b/exec/ircd.js
index 75eac700896c0d64fd1d24f28412fb1c6353edd3..5af53510937333a0b05589ec0e4819a5ec41484d 100644
--- a/exec/ircd.js
+++ b/exec/ircd.js
@@ -435,10 +435,10 @@ function push_nickbuf(oldnick,newnick) {
 }
 
 function search_nickbuf(bufnick) {
-	for (nb=0;nb<NickHistory.length;nb++) {
-		if (NickHistory[nb] && (bufnick.toUpperCase() == NickHistory[nb].oldnick.toUpperCase())) {
+	for (nb=NickHistory.length-1;nb>-1;nb--) {
+		if (bufnick.toUpperCase() == NickHistory[nb].oldnick.toUpperCase()) {
 			if (!Users[NickHistory[nb].newnick.toUpperCase()])
-				return search_nickbuf(NickHistory[nb].newnick);
+				bufnick = NickHistory[nb].newnick;
 			else
 				return Users[NickHistory[nb].newnick.toUpperCase()];
 		}