Why does this return long?  What's the range of the result?