Wildly inaccurate CDR records

My CDR is displaying wildly inaccurate results.
When I make a call the CDR records the time between connecting into the
server and hanging up, instead of recording the time between dialling
from the server to the PSTN destination via VOIP termination.

It is alright to log the duration of the connection to the server, but
why it does not log calls for termination via voip provider is the main
problem, because that is what is required for billing.

Is it a flaw in Asterisk, or have I configured it wrongly?

I have seen some mailing lists items that describe a flaw of the CDR when
using IAX which is what I prefer.

Results returned from the AGI variables concerning DIALSTATUS and
ANSWERED time are also not what I expect. They are usually zero.

The call progress shows up on the screen okay, but some how they don’t
appear to be used for the CDR logging.

Is there away to record the times more accurately?

PS. I have been looking at event progress in the Manager API and it seems to track events more accurately. Is there some cdr recording system that uses that method?

Is my question too difficult, or is it simply an issue few people have ever faced?

That’s an impossible question to answer! Nobody can answer and tell you why they don’t know the answer to your original question - or at least, if they can, it wouldn’t be any different to why you don’t know the answer!

At a guess, if nobody answers the question it probably means nobody who’s read it knows the answer.