Since BASSCD 2.4.7, data is read from the CD asynchronously, while earlier versions read synchronously. This means an update thread now can't be delayed by a slow read during playback of a CD track. And in the case of a decoding channel (like yours), it means BASS_ChannelGetData will return what data it currently has available (it'll actually wait up to 100ms) rather than waiting until more arrives. This shouldn't cause any problems if you check for a return value of -1 (not 0) to detect the end, and it will allow you to exit a decoding loop more quickly if you want to do so. For example:
while (!stop) {
BYTE buf[20000];
int got = BASS_ChannelGetData(handle, buf, sizeof(buf));
if (got == -1) break; // reached the end/failed
}