In case it helps, here:
$ dc -V
dc (GNU bc 1.06.95) 1.3.95
...
's' works in place of 'S' as does your shortened version:
$ printf "1\n2\n100\n" | dc dco
Enter interest rate: Enter loan term in years: Enter present value: 9.763223400
$ printf "1\n2\n100\n" | dc dcs
Enter interest rate: Enter loan term in years: Enter present value: 9.763223400
$ printf "1\n2\n100\n" | dc dc
Enter interest rate: Enter loan term in years: Enter present value: 9.763223400
'dco' is your version.
$ diff dco dcs
3,5c3,5
< [Enter interest rate: ]P?Sili12/si # get i
< [Enter loan term in years: ]P?Snln12*sn # get n
< [Enter present value: ]P?Sp # get p
---
> [Enter interest rate: ]P?sili12/si # get i
> [Enter loan term in years: ]P?snln12*sn # get n
> [Enter present value: ]P?sp # get p
$ diff dco dc
3,4c3,4
< [Enter interest rate: ]P?Sili12/si # get i
< [Enter loan term in years: ]P?Snln12*sn # get n
---
> [Enter interest rate: ]P?12/si # get i
> [Enter loan term in years: ]P?12*sn # get n
--
Ben.