A reciprocating apparatus (1 ; 101, 301) for cardio-pulmonary resuscitation (CPR) driven by a compressed gas, comprising a housing (2, 3, 4; 102, 103, 104; 302, 303, 304), a piston (5; 105; 305) displaceable in the housing (2, 3, 4; 102, 103, 104; 302, 303, 304) defining an upper chamber (A) and a lower chamber (B), a valve (11; 11', 11"; 111; 311) controlling the supply of driving gas to the upper chamber (A) during a reciprocating cycle, wherein the closure of the valve (11; 11', 11 "; 111; 311) is controlled by a microprocessor (13; 113, 313) based on the time at which the piston (5; 105; 305) reached a selected position, in particular its lower extreme position, in an earlier cycle stored in a memory of the microprocessor. Also disclosed are; a method of controlling the amount of compressed gas used for driving a reciprocating apparatus for cardio-pulmonary resuscitation (CPR) comprising a valve for controlling the provision of driving gas comprises operation of the valve during the compression phase to stop provision of driving gas, which operation is separated in time from the venting of the driving gas from the apparatus at the end of the compression phase; a method of compression depth sensing.