Did you test the code as you're showing it? It works fine here.
Here's a simple test alias. Just use /test_alias username - or omit the username to see what happens when %username is not set.
Code:
alias test_eval {
if ($1) {
var %username = $1
}
var %moo = You are $!iif([username] == $!null, not logged in, logged in as [username]) $!+ .
echo -a Value of % $+ moo: %moo
echo -a $eval($replacex(%moo, [username], % $+ username), 2)
}