@mickecarlsson I do not think the actual problem is with writing the EEPROM, as the EEPROM.put function is used and this will Write any data type or object to the EEPROM. EEPROM.put(1,totalMilliLitres); as the totalMilliLitres is already an unsigned variable that should be good for up to ten digits. unsigned long totalMilliLitres; // unsigned long max 4,294,967,294 on UNO/Mega The only problem area i can see is the use of volatile byte pulseCount; which severely limits the pulse counts to 255 and whould be better as volatile unsigned int pulseCount; // volatile byte pulseCount; byte max 255 More clarification of the actual problem is needed.