>That's just wonderful. Is there a workaround, or do I need to write methods to assign values?
You might save the old value for Top, etc. in other properties, and in _Assign, compare to see if the value really changed. If it didn't, just don't do anything.
Difference in opinions hath cost many millions of lives: for instance, whether flesh be bread, or bread be flesh; whether whistling be a vice or a virtue; whether it be better to kiss a post, or throw it into the fire... (from Gulliver's Travels)