MarkT:
Sounds like a case for muldiv (a, b, c) - anyone who's au-fait with AVR assembler
could probably knock one up...
The Forth word is */, the scaling operator.
It takes 2 ints and multiplies them into a long then divides that by a 3rd int to leave a scaled int.