It's big and ugly, but here you go:
assign("factor", 15);
assign("percent",
if(n < 10, switch(r, 1, 30.00, 2, 20.00, 3, 13.00, 4, 10.00, 5, 8.00, 6, 7.00, 7, 5.00, 8, 4.00, 9, 3.00),
if(n < 19, switch(r, 1, 29.00, 2, 18.50, 3, 13.00, 4, 10.00, 5, 8.00, 6, 7.00, 7, 5.50, 8, 4.50, 9, 3.50, 10, 1.00, 11, 1.00, 12, 1.00, 13, 1.00, 14, 1.00, 15, 1.00, 16, 1.00, 17, 1.00, 18, 1.00),
if(n < 28, switch(r, 1, 28.00, 2, 18.00, 3, 12.50, 4, 10.00, 5, 8.00, 6, 7.00, 7, 6.00, 8, 4.50, 9, 3.50, 10, 1.50, 11, 1.50, 12, 1.50, 13, 1.50, 14, 1.50, 15, 1.50, 16, 1.50, 17, 1.50, 18, 1.50, 19, 1.00, 20, 1.00, 21, 1.00, 22, 1.00, 23, 1.00, 24, 1.00, 25, 1.00, 26, 1.00, 27, 1.00),
if(n < 37, switch(r, 1, 27.25, 2, 17.75, 3, 12.50, 4, 10.00, 5, 8.00, 6, 7.00, 7, 6.00, 8, 4.50, 9, 3.50, 10, 1.75, 11, 1.75, 12, 1.75, 13, 1.75, 14, 1.75, 15, 1.75, 16, 1.75, 17, 1.75, 18, 1.75, 19, 1.25, 20, 1.25, 21, 1.25, 22, 1.25, 23, 1.25, 24, 1.25, 25, 1.25, 26, 1.25, 27, 1.25, 28, 0.50, 29, 0.50, 30, 0.50, 31, 0.50, 32, 0.50, 33, 0.50, 34, 0.50, 35, 0.50, 36, 0.50),
if(n < 46, switch(r, 1, 26.75, 2, 17.50, 3, 12.50, 4, 10.00, 5, 8.00, 6, 7.00, 7, 6.00, 8, 4.50, 9, 3.75, 10, 1.75, 11, 1.75, 12, 1.75, 13, 1.75, 14, 1.75, 15, 1.75, 16, 1.75, 17, 1.75, 18, 1.75, 19, 1.25, 20, 1.25, 21, 1.25, 22, 1.25, 23, 1.25, 24, 1.25, 25, 1.25, 26, 1.25, 27, 1.25, 28, 0.75, 29, 0.75, 30, 0.75, 31, 0.75, 32, 0.75, 33, 0.75, 34, 0.75, 35, 0.75, 36, 0.75, 37, 0.25, 38, 0.25, 39, 0.25, 40, 0.25, 41, 0.25, 42, 0.25, 43, 0.25, 44, 0.25, 45, 0.25),
switch(r, 1, 26.50, 2, 17.50, 3, 12.50, 4, 10.00, 5, 8.00, 6, 7.00, 7, 6.25, 8, 4.50, 9, 3.75, 10, 1.50, 11, 1.50, 12, 1.50, 13, 1.50, 14, 1.50, 15, 1.50, 16, 1.50, 17, 1.50, 18, 1.50, 19, 1.00, 20, 1.00, 21, 1.00, 22, 1.00, 23, 1.00, 24, 1.00, 25, 1.00, 26, 1.00, 27, 1.00, 28, 0.75, 29, 0.75, 30, 0.75, 31, 0.75, 32, 0.75, 33, 0.75, 34, 0.75, 35, 0.75, 36, 0.75, 37, 0.50, 38, 0.50, 39, 0.50, 40, 0.50, 41, 0.50, 42, 0.50, 43, 0.50, 44, 0.50, 45, 0.50, 0.25)
)
)
)
)
)
);
round(n * factor * percent / 100)