#ifndef PINGINTERVAL_H
 #define PINGINTERVAL_H
 
+#include <boost/assert.hpp>
+
 //-----------------------------------------------------------------------------
 // PingInterval
 //-----------------------------------------------------------------------------
         OriginalInterval( interval ),
         Interval( interval )
     {
+        BOOST_ASSERT( 0 < interval );
     }
 
 template<typename T>
 template<typename T>
     PingInterval<T>::operator T()
     {
+        BOOST_ASSERT( 0 < Interval );
+
         return Interval;
     }
 
     void PingInterval<T>::back_to_original()
     {
         Interval = OriginalInterval;
+
+        BOOST_ASSERT( 0 < Interval );
     }
 
 template<typename T>
     void PingInterval<T>::speed_up()
     {
+        BOOST_ASSERT( 0 < Interval );
+
         if ( can_speed_up() )
+        {
             Interval = Interval / 2;
+        }
+
+        if ( Interval < 1 )
+        {
+            Interval = 1;
+        }
+
+        BOOST_ASSERT( 0 < Interval );
     }
 
 template<typename T>
     {
         T half_original = OriginalInterval / 2;
 
-        return (Interval > half_original);
+        return ( Interval > half_original );
     }