All your variables should be UNSIGNED type.
I've implemented Roman's technique on 16F887 @ 20 MHz without any problem (of course, all the incrementing is done in the interrupt routine), in Proton+. 20 MHz was just for proof of concept as I run the PIC on it's internal oscillator @ 4 MHz.
So in your main program you should test only your new_second variable and do what you need to do at the 1 sec period.
At the moment I rum on a small breadboard a kind of thermostat comprising 2x16 LCD, DS18B20 and 16F628A on it's internal oscillator, displaying time (clock) and actual room temperature. Clock is drifting, of course, as the internal oscillator is voltage and temperature dependent, but, just as proof of concept, it runs satisfactory.