Uses conditional assign instead of logical eval.