bueno, pues te voy a dejar una idea para que te rompas la cabeza y puede que ahi veas el por que de mi respuesta anterior.

utiliza un
flag, que no es nada mas que otra cosa que un boolean le pones
true o
false cuando un elemento recibe foco o lo pierde. o sea, cuando uno de ellos recibe foco, le pones
false para que salga de la funcion, y
true cuando quites el foco del mismo campo.
te adelanto mi hipotesis. tan pronto salga del primer campo, aunque el foco se mueva al proximo, se ejecutara el proceso. y es logico por el orden que sucede las cosas, primero tiene que completarse el evento blur antes de focus. o quizas en este momento estoy muy torpe como para poder analizar una mejor solucion usando flag.