I'm scheduling a full day's worth of music, but my playout system always comes up short.

Two things could be going on.  First, it could be that some of the Song Cards in M1 don't have the correct drive\path\filename in the CART field.  Remember, what's in the CART field is what M1 gives to the automation/playout system.  In your case to SAM Broadcaster.  Sometimes a guy might move the audio file from one folder to another after the data has been imported onto a M1 Song Card. M1 doesn't know that it's been moved, it doesn't change the CART field automatically.  So later, M1 schedules the song, the 'old'  Drive\Path is in the playlist and SAM comes to it, doesn't knowwhere to find it and passes it.   If this happens more than a couple times in a playlist, you could easily come up short.

for the second possibility, see below: