Ubuntu Geonames in fact return everything correct, but our lp:timezonemap project which powers libtimezonemap package is indeed incorrect. We have an SVG with world map and layers of each timezone overlaid across countries, which provides correct highlighting of the whole timezone upon selecting a location. Unfortunately those have not been updated after recent major timezone moves (e.g. Russia stopping daylight saving time and effectively moving all of it's timezones by one hour). Somebody who known how to work with SVG layers should update the sprites for each timezone.
Ubuntu Geonames in fact return everything correct, but our lp:timezonemap project which powers libtimezonemap package is indeed incorrect. We have an SVG with world map and layers of each timezone overlaid across countries, which provides correct highlighting of the whole timezone upon selecting a location. Unfortunately those have not been updated after recent major timezone moves (e.g. Russia stopping daylight saving time and effectively moving all of it's timezones by one hour). Somebody who known how to work with SVG layers should update the sprites for each timezone.