The operation of this program demonstrates that cylinder.rayIntersect is incorrect if the cylinder is displaced from the origin in the direction of its axis:
from visual import *
a = cylinder( pos=(0,1,0), axis=(0,1,0) )
while 1:
c = scene.mouse.getclick()
if c.pick: c.pick.y = c.pick.y + 1
Fixed in CVS.