Ok. Got a bit further.
I was wrong before.
A ts packet always contains 188 bytes.
4 bytes header and 184 bytes payload.
The payload as far as pes packets are concerned can be 1 of the following:
1. One PES packet per TS packet. If the pes packet does not fit in the 184 bytes payload it continues in the next TS packet
2. One PES packet starting AND one PES packet continues in ONE ts packet
At the moment only option 1 is parsed.
But DISH seems to use option 2 so there are our skipped shows
So we have to implement option 2 too to get the missing shows as at the moment, these PES packets are dropped.