Hi Fidel,
There were a couple of issues
1) Need to normalize the difference vector
2) Difference vector should be end - start to get a vector pointing towards the end point
3) Use more than one scratch vector -- the difference vector was getting overwritten since scratch was used to store the normal also (which is why you were getting a dot product of one)
4) Use 90 - result to get the angle from the ground since this computation gets the angle between the difference vector and the surface normal.
I didn't get a chance to test it thoroughly, but give it a try.
Hope that helps,
- Rachel