I think !KeyPitch is defaulting to using nn, and I don't think negative nn's have a real meaning. To get this working in reverse convert to hz. eg:
!KeyPitch nn hz * !Detune
I don't think this is an issue with MIDIVoice, it's just trying to use a negative nn which doesn't work.