OK, so that is the problem!
I thought this was a way to emulate a shift register, but I didn't realise that ShiftIn was generating the clock, instead of accepting a clock!