diff --git a/master/slave.c b/master/slave.c
index 9492184ecbca4f2a86f6e39cf9d083ec3af6ed9b..acde1faf346ddfbeb4b31d514d94982dbb420fe4 100644
--- a/master/slave.c
+++ b/master/slave.c
@@ -1508,20 +1508,23 @@ uint16_t ec_slave_calc_eeprom_sync_size(const ec_slave_t *slave,
 {
     ec_eeprom_pdo_t *pdo;
     ec_eeprom_pdo_entry_t *pdo_entry;
-    uint16_t size;
+    unsigned int bit_size;
 
     if (sync->length) return sync->length;
 
-    size = 0;
+    bit_size = 0;
     list_for_each_entry(pdo, &slave->eeprom_pdos, list) {
         if (pdo->sync_manager != sync->index) continue;
 
         list_for_each_entry(pdo_entry, &pdo->entries, list) {
-            size += pdo_entry->bit_length / 8;
+            bit_size += pdo_entry->bit_length;
         }
     }
 
-    return size;
+    if (bit_size % 8) // round up to full bytes
+        return bit_size / 8 + 1;
+    else
+        return bit_size / 8;
 }
 
 /******************************************************************************