I recently started using the SqrSoft crossfader plugin for WinAmp. It's quite smart about how it does crossfading. It scans ahead and waits until the volume level is already dropping in the song (below a certain threshold). Then it begins the fade. If the song just cuts out at the end, then that threshold is never triggered so it doesn't fade. Something like this would be pretty slick in an empeg!

Here's a snippet from the SqrSoft crossfader:
#######################
4. How does it work?
ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
A few words on what this plugin basically does to crossfade the music...
Assuming a track is playing, the track reaches the end so Winamp tells the
output module to "close" the output, at this time the plugin first analyzes
the mixing buffer (that contains the track end) to eliminate the silence at
the end, once this is done it analyzes the sound level trying to find the
best point from where to mix, this is done by scanning the peak level in the
buffer from end to start, when the level has been found all the previous data
to that point is written on the sound device, if the desired level is not found
the buffer remains untouched.
There's a notification that the device must be closed, then a process waits
for a call from Winamp to "open" the device again, if this is not done the
process writes the mixing buffer contents on the output device, it waits until
the device finish playing and "closes" the output device, if the call is done
just cancels the awaiting close.
So once Winamp calls "open" it starts calling "write" to place the new track
data in the sound device. At this point the plugin starts searching for the
new data for a louder sound than the rise trigger level specified in the Gap
Killer.
Then it mixes the new track data with the one it is contained in the mixing
buffer using the envelope curves and finally it places the mixed data in a
new mixing buffer.
In this way the two tracks can be mixed. The mix is done while the sound
device is playing the data in the sound buffer. The sound buffer length
should be big enough to cover the time the plugin lost in the mix because the
mixing process is not very fast.
When the mix finishes the plugin continue playing normally until the track
reaches the end...
#######################

--The Amigo
_________________________
--The Amigo