I still don't have the faintest clue what went wrong here. There is some further discussion of the bug on Processed Tower Defense's issue tracker, but suffice it to say that many work-arounds and cheap tricks were attempted, and nothing shed much light on the problem. I tried using Math.floor to do an integer comparison (thinking it might have been some kind of float bug), I tried subtracting the distance from radius and checking if the number was greater than zero... I tried a lot of things. In the end I resorted to my resort against self-inflict stupidity: I rewrote the method from scratch.
Here is the rewritten--and correctly working--code: