procedure remap (range1, range2, n) n *:= 1.0 if n < range2.a | n > range2.b then fail # n out of given range return range1.a + (n - range2.a) * (range1.b - range1.a) / (range2.b - range2.a) end