Is skipping around not possible with the synchronous high level API? The mad_decoder_command() seems to simply kill the playback.
mad_decoder_command() is only intended to be used with the async API. It also isn't finished yet.
Skipping around with the sync API is awkward because you only get control in a few well-defined places. Possibly you could make this work by resetting the input buffer from the filter or output functions, but a better way is probably to use the low-level API instead.
With a little more work maybe I can get the async API to a point where this is easier.
-rob