After you fctiwz, push the new float register onto the stack, and then pop it off into a normal register. There may or may not be a 32-/64-bit issue...
Here's an example, from the end of the following website:
http://www.lightsoft.co.uk/PD/rob/ppcfloat.html fctiwz f0,f1 ; convert
stfd f0,(r8) ; store
lwz r3,4(r8) ; load into integer register
They are using stfd instead of stfs. d = double precision = 64 bits (hence the 4(r8)), s = single precision = 32 bits. So the following might work, although there might be a reason why they're using stfd...
fctiwz f0,f1 ; convert
stfs f0,(r8) ; store
lwz r3,0(r8) ; load into integer register
EDIT: note that they aren't using the stack here. =( You need some unused memory, and usually the stack is the safest way to make unused memory. You can pretend r8 is pointing at a Gecko Register for the purposes of the example