Sorry, but I think that you are wrong. Problem is that snap calculations are doing only from corners (omitting edge). If you drag red rectangle and one of it's corners is near green rectangle then it snap to it, but if every corners (of red rectangle) are more distant that snapTolerance then it doesn't snap.
Here is example: http://jsbin.com/ococaz/5/edit
If you drag red rectangle then light red rectangles must "touch" green rectangle to snap red rectangle to green rectangle. If you drag green rectangle then light green rectangles must "touch" red rectangle to snap green rectangle to red rectangle.
In order to snap red and green rectangle - you need to drag them to eachother. It doesn't matter if they will touch with edges or corners.
In the link below you can find the areas that shoud react the snapping: