Let me try again: SNAN => unfortunately absent QNAN => deliberately absent So you can have: compute(SNAN) => handle(exception) { if(can turn unfortunate situation into deliberate) then compute(QNAN) else throw )