Hintereinander ausgeführte Scale-Faktoren bei Sunspec

Hallo zusammen,
Mir ist heute folgendes Problem beim Auslesen der Frequenz bei einem Sunspec-Meter (S203) aufgefallen: Der Wert im entsprechenden Modbus-Register ist 4997 beim Scale-Factor -2, Einheit Hertz, sprich eine Frequenz von 49,97 Hz bzw. 49970 mHz. Jetzt wird beim Anwenden des Scale-Factors der Wert 49,97 zu Short konvertiert, also auf 49 abgerundet, und dann mit einem Scale-Factor 3 in den Channel SymmetricMeter.FREQUENCY geschrieben, der dann 49000 mHz beinhaltet, durchaus eine starke Abweichung. Im Code zum ElementToChannelScaleFactorConverter sieht das so aus:

if (value instanceof Short) {
					double result = ((Short) value) * factor;
					if (result >= Short.MIN_VALUE && result <= Short.MAX_VALUE) {
						return Short.valueOf((short) result);
					} else if (result > Integer.MIN_VALUE && result < Integer.MAX_VALUE) {
						return Integer.valueOf((int) result);
					} else {
						return Double.valueOf(Math.round(result));
					}
				}

Die Variable value hat den Wert 4997, factor den Wert 0,01, also ist result = 49,97 und wird zu Short 49 konvertiert.
Wenn ich den Code nun einfach folgendermaßen ändere:

if (value instanceof Short) {
					double result = ((Short) value) * factor;
					return result;

haut es hin. Da diese Änderung allerdings in so einer zentralen Komponente passiert und der Typ des Return-Wertes sich ändert, habe ich die Befürchtung, dass andere Komponenten nicht mehr richtig funktionieren werden (wobei andererseits im letzten else-Zweig des ursprünglichen Codes auch ein Double zurückgegeben wird). Hat jemand hier den Durchblick und kann meine Befürchtung bestätigen, oder besser noch aus der Welt schaffen?

Vielen Dank im Voraus!