Hi Mark,
I have spent the last couple of hours looking at your code and I cant work it out, if you could place a few text pointers around that would be great.
A few things, why the group by (min base) and why s1.top <= t1.base
I am sorry I am stupid but there are two many steps removed for me to learn how you came up with this.
Sorry to be a pain.
Many Thanks,
Oliver