I noticed that, defining the same shape in different ways, the results depend strongly on the specific implementation of the geometry. What is most worrying is that, in the case of G4IntersectionSolid, the results depend on the order with which the intersection is performed (solid A intersecated solid B gives a different result than solid B intersecated solid A). I wrote a small program to show this effect, which I placed in: http://agata.pd.infn.it/documents/simulations/data/bugIntersection.tgz In the package you will also find a modified version of G4IntersectionSolid which should solve this problem. This should work also for geant4.7.0
The algorithm proposed by Dino Bazzacco <dino.bazzacco@pd.infn.it> was tested and accepted for G4IntersectionSolid::DistanceToIn(p,v).