Halo posted some code a little while ago that does this sort of thing. I suggest you take a look.
http://www.blitzbasic.co.nz/bbs/posts.php?topic=21629
Though where he poses the question 'Should the collision normals be absolute value or not' in the first bit of code I suspect the answer is not.
http://www.blitzbasic.co.nz/bbs/posts.php?topic=21629
Though where he poses the question 'Should the collision normals be absolute value or not' in the first bit of code I suspect the answer is not.