diff --git a/src/ros_subscribe.cpp b/src/ros_subscribe.cpp
index 36791596de20c3469e18c817db94f756abd5ba8c..4c1f02c84d00335f8973e9aa93120e757fd56572 100644
--- a/src/ros_subscribe.cpp
+++ b/src/ros_subscribe.cpp
@@ -183,7 +183,16 @@ namespace dynamicgraph
 
   void RosSubscribe::rm (const std::string& signal)
   {
+    std::string signalTs = signal+"Timestamp";
+
+    signalDeregistration(signal);
     bindedSignal_.erase (signal);
+
+    if(bindedSignal_.find(signalTs) != bindedSignal_.end())
+    {
+       signalDeregistration(signalTs);
+       bindedSignal_.erase(signalTs);
+    }
   }
 
   std::string RosSubscribe::list ()
@@ -199,7 +208,12 @@ namespace dynamicgraph
 
   void RosSubscribe::clear ()
   {
-    bindedSignal_.clear ();
+    std::map<std::string, bindedSignal_t>::iterator it = bindedSignal_.begin();
+    for(; it!= bindedSignal_.end(); )
+    {
+      rm(it->first);
+      it = bindedSignal_.begin();
+    }
   }
 
   std::string RosSubscribe::getDocString () const