correctly handles NaN in dirty checking