diff --git a/include/dynamic-graph/python/dynamic-graph-py.hh b/include/dynamic-graph/python/dynamic-graph-py.hh
index f62c16ef93ccc3f75ba65ffe4a5d22a183a20255..51c2810f11e123b40deebe4129031b0181b7e074 100644
--- a/include/dynamic-graph/python/dynamic-graph-py.hh
+++ b/include/dynamic-graph/python/dynamic-graph-py.hh
@@ -40,7 +40,7 @@ void exposeSignals();
 
 // Declare functions defined in other source files
 namespace signalBase {
-SignalBase<int>* createSignalWrapper(const char* name, const char* type,
+SignalBase<sigtime_t>* createSignalWrapper(const char* name, const char* type,
                                      bp::object object);
 }  // namespace signalBase
 namespace entity {
diff --git a/include/dynamic-graph/python/signal-wrapper.hh b/include/dynamic-graph/python/signal-wrapper.hh
index 30a22e2d1415e2025182daf389003d0cb7f5c208..9cdaa308f121dbeaacd16c3e128fe36ef59a9d6f 100644
--- a/include/dynamic-graph/python/signal-wrapper.hh
+++ b/include/dynamic-graph/python/signal-wrapper.hh
@@ -22,7 +22,7 @@ class PythonSignalContainer : public Entity {
  public:
   using Entity::Entity;
 
-  void signalRegistration(const SignalArray<int>& signals);
+  void signalRegistration(const SignalArray<sigtime_t>& signals);
 
   void rmSignal(const std::string& name);
 };
diff --git a/src/dynamic_graph/dynamic-graph-py.cc b/src/dynamic_graph/dynamic-graph-py.cc
index 0cf7355b3710abbc28584c81335ef0ee4718fe7a..5946ffade4dc239f5dc14b6e408b9e2610d7468d 100644
--- a/src/dynamic_graph/dynamic-graph-py.cc
+++ b/src/dynamic_graph/dynamic-graph-py.cc
@@ -32,7 +32,7 @@ namespace python {
 /**
    \brief plug a signal into another one.
 */
-void plug(SignalBase<int>* signalOut, SignalBase<int>* signalIn) {
+void plug(SignalBase<sigtime_t>* signalOut, SignalBase<sigtime_t>* signalIn) {
   signalIn->plug(signalOut);
 }
 
@@ -66,7 +66,8 @@ MapOfEntities* getEntityMap() {
       &dg::PoolStorage::getInstance()->getEntityMap());
 }
 
-dg::SignalBase<int>* getSignal(dg::Entity& e, const std::string& name) {
+dg::SignalBase<dg::sigtime_t>* getSignal(dg::Entity& e, const std::string& name)
+{
   return &e.getSignal(name);
 }
 
@@ -76,7 +77,7 @@ class PythonEntity : public dg::Entity {
  public:
   using dg::Entity::Entity;
 
-  void signalRegistration(dg::SignalBase<int>& signal) {
+  void signalRegistration(dg::SignalBase<dg::sigtime_t>& signal) {
     dg::Entity::signalRegistration(signal);
   }
   void signalDeregistration(const std::string& name) {
diff --git a/src/dynamic_graph/signal-base-py.cc b/src/dynamic_graph/signal-base-py.cc
index a6f4db6dc74a00076b340e7d8df2c06c20f2ae5d..82b46d74f00fe59eea66bd5a2ff2a06898ebaeae 100644
--- a/src/dynamic_graph/signal-base-py.cc
+++ b/src/dynamic_graph/signal-base-py.cc
@@ -22,8 +22,6 @@ namespace bp = boost::python;
 namespace dynamicgraph {
 namespace python {
 
-typedef int time_type;
-
 typedef Eigen::AngleAxis<double> VectorUTheta;
 typedef Eigen::Quaternion<double> Quaternion;
 
@@ -79,7 +77,7 @@ void exposeSignalBase(const char* name) {
           })
       .def(
           "displayDependencies",
-          +[](const S_t& s, int time) -> std::string {
+          +[](const S_t& s, sigtime_t time) -> std::string {
             std::ostringstream oss;
             s.displayDependencies(oss, time);
             return oss.str();
@@ -88,9 +86,9 @@ void exposeSignalBase(const char* name) {
 }
 
 template <>
-auto exposeSignal<MatrixHomogeneous, time_type>(const std::string& name) {
-  typedef Signal<MatrixHomogeneous, time_type> S_t;
-  bp::class_<S_t, bp::bases<SignalBase<time_type> >, boost::noncopyable> obj(
+auto exposeSignal<MatrixHomogeneous, sigtime_t>(const std::string& name) {
+  typedef Signal<MatrixHomogeneous, sigtime_t> S_t;
+  bp::class_<S_t, bp::bases<SignalBase<sigtime_t> >, boost::noncopyable> obj(
       name.c_str(), bp::init<std::string>());
   obj.add_property(
       "value",
@@ -107,31 +105,31 @@ auto exposeSignal<MatrixHomogeneous, time_type>(const std::string& name) {
 }
 
 void exposeSignals() {
-  exposeSignalBase<time_type>("SignalBase");
+  exposeSignalBase<sigtime_t>("SignalBase");
 
-  exposeSignalsOfType<bool, time_type>("Bool");
-  exposeSignalsOfType<int, time_type>("Int");
-  exposeSignalsOfType<double, time_type>("Double");
+  exposeSignalsOfType<bool, sigtime_t>("Bool");
+  exposeSignalsOfType<int, sigtime_t>("Int");
+  exposeSignalsOfType<double, sigtime_t>("Double");
 
-  exposeSignalsOfType<Vector, time_type>("Vector");
-  exposeSignalsOfType<Vector3, time_type>("Vector3");
-  exposeSignalsOfType<Vector7, time_type>("Vector7");
+  exposeSignalsOfType<Vector, sigtime_t>("Vector");
+  exposeSignalsOfType<Vector3, sigtime_t>("Vector3");
+  exposeSignalsOfType<Vector7, sigtime_t>("Vector7");
 
-  exposeSignalsOfType<Matrix, time_type>("Matrix");
-  exposeSignalsOfType<MatrixRotation, time_type>("MatrixRotation");
-  exposeSignalsOfType<MatrixHomogeneous, time_type>("MatrixHomogeneous");
-  exposeSignalsOfType<MatrixTwist, time_type>("MatrixTwist");
+  exposeSignalsOfType<Matrix, sigtime_t>("Matrix");
+  exposeSignalsOfType<MatrixRotation, sigtime_t>("MatrixRotation");
+  exposeSignalsOfType<MatrixHomogeneous, sigtime_t>("MatrixHomogeneous");
+  exposeSignalsOfType<MatrixTwist, sigtime_t>("MatrixTwist");
 
-  exposeSignalsOfType<Quaternion, time_type>("Quaternion");
-  exposeSignalsOfType<VectorUTheta, time_type>("VectorUTheta");
+  exposeSignalsOfType<Quaternion, sigtime_t>("Quaternion");
+  exposeSignalsOfType<VectorUTheta, sigtime_t>("VectorUTheta");
 }
 
 namespace signalBase {
 
 template <class T>
-SignalWrapper<T, int>* createSignalWrapperTpl(const char* name, bp::object o,
+SignalWrapper<T, sigtime_t>* createSignalWrapperTpl(const char* name, bp::object o,
                                               std::string& error) {
-  typedef SignalWrapper<T, int> SignalWrapper_t;
+  typedef SignalWrapper<T, sigtime_t> SignalWrapper_t;
   if (!SignalWrapper_t::checkCallable(o, error)) {
     return NULL;
   }
@@ -153,12 +151,12 @@ PythonSignalContainer* getPythonSignalContainer() {
 /**
    \brief Create an instance of SignalWrapper
 */
-SignalBase<int>* createSignalWrapper(const char* name, const char* type,
+SignalBase<sigtime_t>* createSignalWrapper(const char* name, const char* type,
                                      bp::object object) {
   PythonSignalContainer* psc = getPythonSignalContainer();
   if (psc == NULL) return NULL;
 
-  SignalBase<int>* obj = NULL;
+  SignalBase<sigtime_t>* obj = NULL;
   std::string error;
   SIGNAL_WRAPPER_TYPE(if, BOOL, bool)
   // SIGNAL_WRAPPER_TYPE(else if, UNSIGNED ,bool)
diff --git a/src/dynamic_graph/signal-wrapper.cc b/src/dynamic_graph/signal-wrapper.cc
index cc41fb07bc0f46fe145df8950c4284539fba3741..a878ede0e09c83fa7a3aee288e402307bd8656b0 100644
--- a/src/dynamic_graph/signal-wrapper.cc
+++ b/src/dynamic_graph/signal-wrapper.cc
@@ -9,7 +9,7 @@
 namespace dynamicgraph {
 namespace python {
 void PythonSignalContainer::signalRegistration(
-    const SignalArray<int>& signals) {
+    const SignalArray<sigtime_t>& signals) {
   Entity::signalRegistration(signals);
 }
 
@@ -30,10 +30,13 @@ bool SignalWrapper<T, Time>::checkCallable(pyobject c, std::string& error) {
   return true;
 }
 
-template class SignalWrapper<bool, int>;
-template class SignalWrapper<int, int>;
-template class SignalWrapper<float, int>;
-template class SignalWrapper<double, int>;
-template class SignalWrapper<Vector, int>;
+template class SignalWrapper<bool, sigtime_t>;
+template class SignalWrapper<int32_t, sigtime_t>;
+template class SignalWrapper<int64_t, sigtime_t>;
+template class SignalWrapper<uint32_t, sigtime_t>;
+template class SignalWrapper<uint64_t, sigtime_t>;
+template class SignalWrapper<float, sigtime_t>;
+template class SignalWrapper<double, sigtime_t>;
+template class SignalWrapper<Vector, sigtime_t>;
 }  // namespace python
 }  // namespace dynamicgraph
diff --git a/tests/custom_entity.cpp b/tests/custom_entity.cpp
index a7aa2f58692d4c6a7e150cab633c1a4afdddfa0d..1ead1091bac5e0bff6d2446302bcf5787b9481d4 100644
--- a/tests/custom_entity.cpp
+++ b/tests/custom_entity.cpp
@@ -46,7 +46,7 @@ void CustomEntity::rmValidSignal() {
   signalDeregistration("out_double");
 }
 
-double &CustomEntity::update(double &res, const int &inTime) {
+double &CustomEntity::update(double &res, const sigtime_t &inTime) {
   const double &aDouble = m_sigdSIN(inTime);
   res = aDouble;
   logger().stream(MSG_TYPE_ERROR) << "start update " << res << '\n';
diff --git a/tests/custom_entity.h b/tests/custom_entity.h
index fd821f09443ed1c255d9e9181d0fd48b06068793..c950a079f8c5b186167ce59b10effaccf88080fc 100644
--- a/tests/custom_entity.h
+++ b/tests/custom_entity.h
@@ -14,8 +14,8 @@
 namespace dynamicgraph {
 class CustomEntity : public Entity {
  public:
-  dynamicgraph::SignalPtr<double, int> m_sigdSIN;
-  dynamicgraph::SignalTimeDependent<double, int> m_sigdTimeDepSOUT;
+  dynamicgraph::SignalPtr<double, sigtime_t> m_sigdSIN;
+  dynamicgraph::SignalTimeDependent<double, sigtime_t> m_sigdTimeDepSOUT;
 
   DYNAMIC_GRAPH_ENTITY_DECL();
   CustomEntity(const std::string n);
@@ -24,7 +24,7 @@ class CustomEntity : public Entity {
 
   void rmValidSignal();
 
-  double &update(double &res, const int &inTime);
+  double &update(double &res, const sigtime_t &inTime);
 
   void act();
 };
diff --git a/tests/test_bindings.py b/tests/test_bindings.py
index 425da39aac6d3d72399621ff816fc6aac5492ba8..12f0e13820080418ace7f1d1491a65e333000ef2 100644
--- a/tests/test_bindings.py
+++ b/tests/test_bindings.py
@@ -8,8 +8,8 @@ ERR = (
     dynamic_graph.wrap.plug(%s, %s)
 did not match C++ signature:
     plug("""
-    "dynamicgraph::SignalBase<int>* signalOut, "
-    "dynamicgraph::SignalBase<int>* signalIn)"
+    "dynamicgraph::SignalBase<long>* signalOut, "
+    "dynamicgraph::SignalBase<long>* signalIn)"
 )