diff --git a/pyzmp/node.py b/pyzmp/node.py
index <HASH>..<HASH> 100644
--- a/pyzmp/node.py
+++ b/pyzmp/node.py
@@ -426,13 +426,15 @@ class Node(object):
             # Starting the clock
             start = time.time()
 
-            # signalling startup only the first time
-            self.started.set()
-
             first_loop = True
             # loop listening to connection
             while not self.exit.is_set():
 
+                # signalling startup only the first time, just after having check for exit request.
+                # We need to guarantee at least ONE call to update.
+                if first_loop:
+                    self.started.set()
+
                 # blocking. messages are received ASAP. timeout only determine update/shutdown speed.
                 socks = dict(poller.poll(timeout=100))
                 if svc_socket in socks and socks[svc_socket] == zmq.POLLIN:
diff --git a/pyzmp/tests/test_node.py b/pyzmp/tests/test_node.py
index <HASH>..<HASH> 100644
--- a/pyzmp/tests/test_node.py
+++ b/pyzmp/tests/test_node.py
@@ -140,6 +140,8 @@ def test_node_creation_args():
     assert n1.is_alive()
     assert svc_url
 
+    # starting and shutdown should at least guarantee ONE call of update function.
+
     exitcode = n1.shutdown()
     assert exitcode == 0
     assert not n1.is_alive()
signaling node start after checking for exit request, to guarantee at least one call to update.