This week's book giveaway is in the General Computing forum. We're giving away four copies of Arduino in Action and have Martin Evans, Joshua Noble, and Jordan Hochenbaum on-line! See this thread for details.
Thanks for referencing Dan's question, it is always good to see the original question. Well, Short.MIN_VALUE is -32768 is a short and that's converted to an int value of -32768. Then the int Math.abs(int) method is called on -32768 returning an int value 32768, and that's not Short.MIN_VALUE. That is, Math.abs only returns an int, long, float, or double. It does not return a short.