Heart Rate Monitor

I would think that “CHANGE” would give different values every other pulse unless the on time of the pulse are the same as the off times.

You may want to see if you get better readings if you only use the odd or even beats.
In loop you could do something like this to have a look:

   if( beats % 2 == 0 )  // only display if even
// if( beats % 2 != 0 ) // only display if odd   <- comment above and uncomment this to see odd beats 
       ssegments(fc);                 //call ssegments function