I have been using it for years. At first it was by accident but I found it worked fine and the code often looks easier to understand. But it seams to be broken in XE2013.
Try this code. It fails if you turn on F2003 semantics. However Premier support say not() is not supported for boolean arguments. I think it is a trap many could fall into.
If you assign not(.true.) to a boolean it actually shows correctly as false in the debugger. But the internal value is -2 which trips up the if block.
print*,'what am I doing in this block'