diff --git a/src/time_stamp.cpp b/src/time_stamp.cpp
index 861104832b76751b1034ce36c4c794efae2d0454..72867409bdd7613b2675b56478ae751f634429e3 100644
--- a/src/time_stamp.cpp
+++ b/src/time_stamp.cpp
@@ -73,6 +73,13 @@ TimeStamp TimeStamp::operator -(const Scalar& dt) const
     return ts;
 }
 
+inline void TimeStamp::operator -=(const Scalar& dt)
+{
+    unsigned long int dt_nano = (unsigned long int)(dt*NANOSECS);
+    //time_stamp_ -= dt;
+    time_stamp_nano_ = (dt_nano > time_stamp_nano_ ? 0 : time_stamp_nano_ - dt_nano);
+}
+
 void TimeStamp::print(std::ostream & ost) const
 {
     //std::streamsize nn;
diff --git a/src/time_stamp.h b/src/time_stamp.h
index 88c65a1cd4387ab049e9a78300932e893d3d5dc5..c507f437dbfd85faf5eee5b8cb40fea08d90cddb 100644
--- a/src/time_stamp.h
+++ b/src/time_stamp.h
@@ -267,13 +267,7 @@ inline bool TimeStamp::operator >=(const TimeStamp& ts) const
 inline void TimeStamp::operator +=(const Scalar& dt)
 {
     //time_stamp_ += dt;
-    time_stamp_nano_ += (unsigned long int)(dt*1e9);
-}
-
-inline void TimeStamp::operator -=(const Scalar& dt)
-{
-    //time_stamp_ -= dt;
-    time_stamp_nano_ -= (unsigned long int)(dt*1e9);
+    time_stamp_nano_ += (unsigned long int)(dt*NANOSECS);
 }
 
 inline Scalar TimeStamp::operator -(const TimeStamp& ts) const