Index: CardManagement/CardHandler/CardTuner.cs
===================================================================
--- CardManagement/CardHandler/CardTuner.cs	(revision 26725)
+++ CardManagement/CardHandler/CardTuner.cs	(working copy)
@@ -139,8 +139,9 @@
               _cardHandler.Card.FreeSubChannel(user.SubChannel);
             }
           }
-
+          _cardHandler.TimeShifter.OnBeforeTune();
           result = _cardHandler.Card.Tune(user.SubChannel, channel);
+          _cardHandler.TimeShifter.OnAfterTune();
 
           bool isLocked = _cardHandler.Card.IsTunerLocked;
           Log.Debug("card: Tuner locked: {0}", isLocked);
Index: CardManagement/CardHandler/TimeShifter.cs
===================================================================
--- CardManagement/CardHandler/TimeShifter.cs	(revision 26725)
+++ CardManagement/CardHandler/TimeShifter.cs	(working copy)
@@ -66,8 +66,8 @@
 
             _waitForTimeshifting = Int32.Parse(layer.GetSetting("timeshiftWaitForTimeshifting", "15").Value);
 
-            _timeAudioEvent = DateTime.Now;
-            _timeVideoEvent = DateTime.Now;
+            _timeAudioEvent = DateTime.MinValue;
+            _timeVideoEvent = DateTime.MinValue;
         }
 
 
@@ -278,18 +278,28 @@
         }
 
         private void AudioVideoEventHandler(PidType pidType)
-        {
+        {              
+            if (_tuneInProgress)
+            {
+              Log.Info("audioVideoEventHandler - tune in progress");
+              return;
+            }
+
             // we are only interested in video and audio PIDs
             if (pidType == PidType.Audio)
-            {
-                TimeSpan ts = DateTime.Now - _timeAudioEvent;
-                if (ts.TotalMilliseconds > 1000)
-                {
-                    // Avoid repetitive events that are kept for next channel change, so trig only once.
-                    Log.Info("audioVideoEventHandler {0}", pidType);
-                    _eventAudio.Set();
-                }
-                _timeAudioEvent = DateTime.Now;
+            {                            
+              TimeSpan ts = DateTime.Now - _timeAudioEvent;
+              if (ts.TotalMilliseconds > 1000)
+              {
+                // Avoid repetitive events that are kept for next channel change, so trig only once.
+                Log.Info("audioVideoEventHandler {0}", pidType);
+                _eventAudio.Set();
+              }
+              else
+              {
+                Log.Info("audio last seen at {0}", _timeAudioEvent);
+              }
+              _timeAudioEvent = DateTime.Now;
             }
 
             if (pidType == PidType.Video)
@@ -301,6 +311,10 @@
                     Log.Info("audioVideoEventHandler {0}", pidType);
                     _eventVideo.Set();
                 }
+                else
+                {
+                  Log.Info("video last seen at {0}", _timeVideoEvent);
+                }
                 _timeVideoEvent = DateTime.Now;
             }
         }
@@ -428,7 +442,8 @@
                     {
                         Stop(ref user);
                         return TvResult.UnableToStartGraph;
-                    }
+                    }                    
+
                     fileName += ".tsbuffer";
                     if (!WaitForTimeShiftFile(ref user, out isScrambled))
                     {
@@ -657,7 +672,7 @@
             }
             else
             {
-                Log.Write("card: WaitForTimeShiftFile - waiting _eventAudio & _eventVideo");
+                Log.Write("card: WaitForTimeShiftFile - waiting _eventAudio & _eventVideo");                
                 // block until video & audio PIDs are seen or the timeout is reached
                 if (_eventAudio.WaitOne(waitForEvent, true))
                 {
@@ -701,5 +716,20 @@
             }
             return false;
         }
+
+      private bool _tuneInProgress = false;
+      public void OnBeforeTune()
+      {
+        _tuneInProgress = true;
+      }
+
+      public void OnAfterTune()
+      {        
+        Log.Debug("resetting audio/video time");
+        _timeAudioEvent = DateTime.MinValue;
+        _timeVideoEvent = DateTime.MinValue;
+
+        _tuneInProgress = false;
+      }
     }
 }
\ No newline at end of file
