Я бы наверное так не делал, много кода мало смыла. Вот так примерно должна выглядеть ваша функция
pastebin.com/GdTYTinx пока много ошибок.
Ну а касательно второго поля оно тут не должно работать по логике, ибо зачем? я же могу вверху поставить 1024 килобита внизу попросить мегабиты, или вверху 1 мегабит а внизу 1024 килобита. А по вашему получается что когда оба поля заполнены то не ясно из какого поля брать реальное значение.