after much playing around with settings the callerid has been a bit hit and miss it would work some times and then not others.
So for around 60% of calls there would be no callerid.
Fix for this was to patch chan_zap.c to ignore rings before CID is complete (about a 1 sec proccess) however, this may be a problem to you if you use a bin asterisk distrib like a@home/trix box. I have pasted the diff below in case it is of use.
--- chan_zap_orig.c 2006-07-11 17:50:15.000000000 +0100 +++ chan_zap.c 2006-07-11 18:21:32.000000000 +0100 @@ -5874,9 +5874,15 @@ } if (i & ZT_IOMUX_SIGEVENT) { res = zt_get_event(p->subs[index].zfd); + /* Ignore ring before end of cid 'slot' (955ms = 7640 @ 8K samples/sec) */ + if (res == 2 && samples < 7640) + ast_log(LOG_NOTICE, "Ignoring event %d (%s) due to waiting for CID, samples=%d\n", res, event2str(res), samples); + else + { ast_log(LOG_NOTICE, "Got event %d (%s)...\n", res, event2str(res)); res = 0; break; + } } else if (i & ZT_IOMUX_READ) { res = read(p->subs[index].zfd, buf, sizeof(buf)); if (res < 0) { @@ -5909,7 +5915,7 @@ } /* Finished with Caller*ID, now wait for a ring to make sure there really is a call coming */ - res = 2000; + res = 4000; for (;;) { struct ast_frame *f; res = ast_waitfor(chan, res);