After working with the algorithms presented by Ryan and reversing it to fit into my own system I am happy to say that it works!
Or so I thought until I backed off a little.
If I move even a slight bit away from the object, just outside the box, the depth check fails it seems.
I have no idea why because the depth buffer is 32bit and I am hardly moving away from the object.
I am using the simplest code that Ryan provided so I cant see where the flaw in my logic is. If you have any thoughts I would love to hear them.