SLH - good point...i was thinking it would be 4...

One way ur method fails (but any method would):
Using floats, and the points are 'equal' yet the values representing them may not be...

Other than that, the opposite corner thing is good