Determining trunk failure vs. busy circuit?

I am running a pure VoIP enviroment. I connect via IAX to several PSTN interconnect providers. When one of the trunks fails, I generally get “everyone is busy/congested at this time” message when I attempt a dial. If I detect this return value, I just automatically loop to the next trunk from a different provider. Easy enough.

The problem is that the Dial application jumps to n+101 regardless of whether I have a trunk failure, or the caller just happened to dial a busy phone number. Does anyone know how to differentiate between the two?