Apparently nothing gets comments going like boring programming stuff. 😛 Anyways, the exciting conclusion!
You were all wrong. I was wrong. Well, half-wrong After all, the buggy code did rise from the grave and came back to haunt me one month later! Just in time for Halloween.
The _speed variable in question was inherited from MovingTarget. Which would’ve been fine, except there was a leftover _speed variable in Craft too. Uninitialized too, naturally. Just hiding there, no warnings, no anything, just happily confusing me and the compiler. Ain’t programming wonderful? A learning experience every day.