you can see two touches and only one ended, and the timestamp difference is milliseconds, so to make this work we need to adjust to a low value difference, like 0.1 seconds or something, otherwise we won't be able to use tapCount.
The solutions works for me, so if anyone interested on the code let me know.
Jose.
PS: by the way, I think it also may happens the other way round, two fast touches may give one touchBegin and two touchesEnd.
One thing which has been a recurring theme with regards to touch input issues in my application has been simply the speed at which the timer callback is monitored.
If this is set too fast for the processing function (ie. by the time I finished processing a callback another one had already triggered) I found it appeared to 'mess' with the input events causing a tailback of them to occur and 'strange' things to happen.
Slowing down the rate at which this is called solved all my issues and might be something worth considering ...
If you run your game/app as a thread, timing the gap between execution times and running your main loop with updates based on the delta time (dt), then you don't drop touches anymore.