             memcpy(&beacon, &rcv[3], sizeof(beacon));
             // determine next send time
             next_send = m + beacon.slot_offs + (beacon.slot_size * node_id);
+            // recalculate time offset
+            time_offset = beacon.time - m;
             break;
 
         case 0x01:



static uint8_t node_id;

typedef struct {
    uint8_t len;

        if (sec != prev_sec) {
            prev_sec = sec;
            // update beacon
            beacon.time = m + time_offset;
            beacon.frame++;
            beacon.slot_offs = 10;
            beacon.slot_size = 10;
