Track attributes set separately from precision (allows missing year). Also simplified some of the patch code