I'm not sure what alg you use, but I more or less use the first ones on the PLL thread with a bit of difference:
I start the (a) algorithm in the position z R, then: U R' D R2 U' R (D' U) R' D R2 U' R D'
Start the (b) algorithm in the position z R', then: U' R D' R2 U R' (D U') R D' R2 U R' D