The following buffers a stream into a bank which because it reads until the end of the stream has a known size and because it is in RAM and not on a computer on the other side of the world is also seekable:
Function OpenBufferedStream:TStream(url:Object) Local bank:TBank bank=LoadBank(url) If bank Return CreateBankStream(bank) End Function