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)
}