Outgoing calls to pstn sometimes fail

I’m using Digium TDMXX FXO/FXS cards in two boxes, connected using IAX. Incoming calls (pstn to phone) are working fine. Outgoing calls (phone to pstn), though, only work sometimes. When they fail, I hear a single ring and then silence. However, Asterisk on the FXO side seems to feel the call has completed successfully. Here are two FXO console dumps, one from a successful call and one from a failed call:

#********************************************

good result

-- Accepting AUTHENTICATED call from 192.168.11.6:
   > requested format = gsm,
   > requested prefs = (gsm),
   > actual format = gsm,
   > host prefs = (gsm),
   > priority = mine
-- Executing [7487800@outgoing:1] Dial("IAX2/rocket-1", "Zap/4/7487800") in new stack
-- Called 4/7487800
-- Zap/4-1 answered IAX2/rocket-1
-- Hungup 'Zap/4-1'

== Spawn extension (outgoing, 7487800, 1) exited non-zero on ‘IAX2/rocket-1’
– Hungup ‘IAX2/rocket-1’

#********************************************

bad result

– Accepting AUTHENTICATED call from 192.168.11.6:
> requested format = gsm,
> requested prefs = (gsm),
> actual format = gsm,
> host prefs = (gsm),
> priority = mine
– Executing [7487800@outgoing:1] Dial(“IAX2/rocket-2”, “Zap/4/7487800”) in new stack
– Called 4/7487800
– Zap/4-1 answered IAX2/rocket-2
– Hungup ‘Zap/4-1’
== Spawn extension (outgoing, 7487800, 1) exited non-zero on ‘IAX2/rocket-2’
– Hungup ‘IAX2/rocket-2’
#********************************************
Note that the “rocket-1” vs “rocket-2” are not the problem; I’ve seen successful calls with “rocket-2” or “rocket-3”, and failed calls with “rocket-1”.

I tested the phone line with a phone connected directly, and outgoing calls work every time, so the line itself doesn’t seem to be the issue.

Any idea what’s going on here??