diff --git a/include/__threading_support b/include/__threading_support
index 29a2907..0331b7c 100644
--- a/include/__threading_support
+++ b/include/__threading_support
@@ -420,13 +420,21 @@
 
     friend _LIBCPP_INLINE_VISIBILITY
         bool operator==(__thread_id __x, __thread_id __y) _NOEXCEPT
-        {return __libcpp_thread_id_equal(__x.__id_, __y.__id_);}
+        { // don't pass id==0 to underlying routines
+        if (__x.__id_ == 0) return __y.__id_ == 0;
+        if (__y.__id_ == 0) return false;
+        return __libcpp_thread_id_equal(__x.__id_, __y.__id_);
+        }
     friend _LIBCPP_INLINE_VISIBILITY
         bool operator!=(__thread_id __x, __thread_id __y) _NOEXCEPT
         {return !(__x == __y);}
     friend _LIBCPP_INLINE_VISIBILITY
         bool operator< (__thread_id __x, __thread_id __y) _NOEXCEPT
-        {return  __libcpp_thread_id_less(__x.__id_, __y.__id_);}
+        { // id==0 is always less than any other thread_id
+        if (__x.__id_ == 0) return __y.__id_ != 0;
+        if (__y.__id_ == 0) return false;
+        return  __libcpp_thread_id_less(__x.__id_, __y.__id_);
+        }
     friend _LIBCPP_INLINE_VISIBILITY
         bool operator<=(__thread_id __x, __thread_id __y) _NOEXCEPT
         {return !(__y < __x);}
@@ -438,7 +446,7 @@
         {return !(__x < __y);}
 
     _LIBCPP_INLINE_VISIBILITY
-    void reset() { __id_ = 0; }
+    void __reset() { __id_ = 0; }
     
     template<class _CharT, class _Traits>
     friend
diff --git a/src/mutex.cpp b/src/mutex.cpp
index ddd36b4..1827857 100644
--- a/src/mutex.cpp
+++ b/src/mutex.cpp
@@ -181,7 +181,7 @@
     unique_lock<mutex> lk(__m_);
     if (--__count_ == 0)
     {
-        __id_.reset();
+        __id_.__reset();
         lk.unlock();
         __cv_.notify_one();
     }
