=== modified file 'src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackListModel.cs'
--- src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackListModel.cs	2009-06-13 00:40:11 +0000
+++ src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackListModel.cs	2009-06-30 07:16:08 +0000
@@ -362,6 +362,8 @@
                     return null;
                 }
 
+                Log.DebugFormat ("In GetRandom().  notPlayedSince = {0}, random_began_at = {1}", notPlayedSince, random_began_at);
+                
                 if (random_began_at < notPlayedSince) {
                     random_began_at = last_random = notPlayedSince;
                 }

=== modified file 'src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs'
--- src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs	2009-06-30 07:16:03 +0000
+++ src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs	2009-06-30 07:16:08 +0000
@@ -311,7 +311,13 @@
                 // transition across playback engines gapless.  Just refuse to try, instead.
                 return false;
             }
-            return active_engine.SetNextTrack (track);
+
+            if (active_engine.SetNextTrack (track)) {
+                IncrementLastPlayed ();
+                incremented_last_played = false;
+                return true;
+            }
+            return false;
         }
 
         public bool SetNextTrack (SafeUri uri)
@@ -319,7 +325,12 @@
             if (active_engine != FindSupportingEngine (uri)) {
                 return false;
             }
-            return active_engine.SetNextTrack (uri);
+            if (active_engine.SetNextTrack (uri)) {
+                IncrementLastPlayed ();
+                incremented_last_played = false;
+                return true;
+            }
+            return false;
         }
 
         public void OpenPlay (TrackInfo track)
@@ -390,6 +401,7 @@
         private bool incremented_last_played = true;
         public void IncrementLastPlayed ()
         {
+            Log.DebugFormat ("IncrementLastPlayed () called.  incremented_last_played = {0}", incremented_last_played);
             if (!incremented_last_played && CurrentTrack != null && CurrentTrack.PlaybackError == StreamPlaybackError.None) {
                 //if Length <= 0 assume 100% completion:
                 if (active_engine.Length <= 0) {

