diff --git a/warden3/warden_server/warden_server.py b/warden3/warden_server/warden_server.py
index b2e5b3a8c23e0142c0da86a6a1d45e1dc2ab66c8..4f3cdb9074d2583db45fe9eb743f8118915d9e7c 100755
--- a/warden3/warden_server/warden_server.py
+++ b/warden3/warden_server/warden_server.py
@@ -713,7 +713,7 @@ class MySQL(ObjectReq):
 
 
     def getLastReceivedId(self, client):
-        row = self.query("SELECT MAX(event_id) as id FROM last_events WHERE client_id = %s", client.id)[0]
+        row = self.query("SELECT event_id as id FROM last_events WHERE client_id = %s ORDER BY last_events.id DESC LIMIT 1", client.id)[0]
 
         id = row['id'] if row is not None else 0
         logging.debug("getLastReceivedId: id %i for client %i(%s)" % (id, client.id, client.hostname))
@@ -965,13 +965,14 @@ class WardenHandler(ObjectReq):
             id = None
 
         if id is None:
+            # If client was already here, fetch server notion of his last id
             try:
                 id = self.db.getLastReceivedId(self.req.client)
             except Exception, e:
                 logging.info("cannot getLastReceivedId - " + type(e).__name__ + ": " + str(e))
                 
         if id is None:
-            # First access, remember the guy and get him last event
+            # First access, remember the guy and get him last id
             id = self.db.getLastEventId()
             self.db.insertLastReceivedId(self.req.client, id)
             return {
@@ -979,6 +980,11 @@ class WardenHandler(ObjectReq):
                 "events": []
             }
 
+        if id<=0:
+            # Client wants to get only last N events and reset server notion of last id
+            id += self.db.getLastEventId()
+            if id<0: id=0
+
         try:
             count = int(count[0])
         except (ValueError, TypeError, IndexError):