If you would like to end a stream early, you can do so via a "mixtime" BASS_SYNC_POS sync, something like this...
BASS_ChannelSetSync(stream, BASS_SYNC_POS|BASS_SYNC_MIXTIME, endpos, EndSyncProc, 0); // set a mixtime POS sync at the end position
...
void CALLBACK EndSyncProc(HSYNC handle, DWORD channel, DWORD data, void *user)
{
BASS_ChannelStop(channel); // end the stream
}