Maths : Keeping total of last 30 days and previous 30

Would implement it as an array of 60 unsigned ints, and use the index as the number of days ago.
Every day you start with shifting all numbers one place towards the end (and the last will fall out of the array).

New pulses are always added in arr[0] as that is 0 days ago. After a day the move to arr[1] and after a week they are in arr[7] etc.

possible alternative for 2:
Keep track of the last two pulse moments and calculate the rate from there.
e.g.
if T1= 15015 millis and T2 = 15376 millis, duration == 361 millis => 60000.0/361 = 166.2 / minute.
new pulse => T1 = 15376 T2 = 15699 etc. => 60000.0/323 = 185.8 / minute
Note this is not the exact number of pulses in the last minute, but it is the last measured pulse rate per minute. It can and will fluctuate a bit more but it is as real time as you can get.