# TI-89 PAY program, infinite loop problem?

• Calculators
TI-89 "PAY" program, infinite loop problem?

I have tried to write a program required for class (Math Analysis, junior in highschool, everyone else has an 83 or 82 but my grandmother bought me this one......so nobody else has been able to help yet) but after solving one error message (I had to unlock a variable) another problem comes up. "Warning: overflow replaced by infinity or negative infinity." When I break the program's functioning by pressing ON it consistently takes me to the same place. Here's the entire program. I bolded the spot where Error: Break takes me to. I used lowercase letters, if there is an upper case letter thats because the lower case was easy to confuse with a number.
:pay()
:Prgm
:Input "loan", b
:Input "apr", r
:Input "payment", p
:b->L
:While p (less than or equal to sign goes here)btimesr/1200
:Disp "payment too small"
Input "payment=", p
EndWhile
0->n
1+r/1200->m
While b>p
btimesp-p->b
n+L->n
EndWhile
ptimesn+b->t
t-L->i
Disp "number payments", n
Disp "last payment", b
Disp "total paid", t
Disp "interest", i
EndPrgm

Mark44
Mentor

I have tried to write a program required for class (Math Analysis, junior in highschool, everyone else has an 83 or 82 but my grandmother bought me this one......so nobody else has been able to help yet) but after solving one error message (I had to unlock a variable) another problem comes up. "Warning: overflow replaced by infinity or negative infinity." When I break the program's functioning by pressing ON it consistently takes me to the same place. Here's the entire program. I bolded the spot where Error: Break takes me to. I used lowercase letters, if there is an upper case letter thats because the lower case was easy to confuse with a number.
I don't have any experience with TI-89 programming, so I'm not sure what it allows you to do. Can you have variable names with more than one letter? Your program would be easier to follow if the variable names were more suggestive of what they represent.

Also, put code inside [ code] and [ /code] tags (without the extra space that I included)
Code:
:pay()
:Prgm
:Input "loan", b
:Input "apr", r
:Input "payment", p
:b->L
:While p (less than or equal to sign goes here)btimesr/1200
Does your code actually use btimesr? I would think it would be something like b * r/1200
Code:
:Disp "payment too small"
Input "payment=", p
EndWhile
0->n
1+r/1200->m
While b>p
[B]btimesp-p->b[/B]
Should this be b * p - p -> b?
If you have an infinite loop here, it is because b > p and the line below isn't decrementing b to the point where b <= p.
Code:
n+L->n
EndWhile
ptimesn+b->t
p * n + b -> t ?
Code:
t-L->i
Disp "number payments", n
Disp "last payment", b
Disp "total paid", t
Disp "interest", i
EndPrgm

jhae2.718
Gold Member

Since the loop implies B>P, it's likely that B*P-P = P(B-1) > B unless P is small. Thus, B continually increases causing the infinite loop.

Mark, FYI the TI-89 uses a limited version of BASIC called TI-BASIC. (I remember the language fondly from my high school days with a TI-84, in the way that horrible experiences are sometimes remembered fondly after being done with them. It's a great language to tinker with, but once you've used a full programming language you wonder how you ever managed with it...)

Last edited:

whenever I put "times" i meant the symbol. I knew using x would have made things horribly confusing and I didn't put much thought into what else I could use. Its weird how the math wouldn't come out right because it works on the 82 and 83, I'd think that they would have the same problem

whenever I put "times" i meant the symbol. I knew using x would have made things horribly confusing and I didn't put much thought into what else I could use. Its weird how the math wouldn't come out right because it works on the 82 and 83, I'd think that they would have the same problem
Typically, "*" is used for the multiplication symbol.

Does it work now, or is it still giving the same error? If it's still not working, I can help. But, it would be helpful to know exactly what the program is supposed to do.

jhae2.718
Gold Member

What is your test case? I ran your code on an 84 and ended up with an overflow.

Yes its still giving the same error. What is a test case?
And the program is supposed to tell you the number payments, last payment, total paid, and the amount of interest spent after you plug in the info requested at the beginning. We're in a finance unit. Well, we were, the test is over (I borrowed another person's calculator with the working program).

jhae2.718
Gold Member

I.e. the inputs you used with a known answer to test the program.

Ah, well thank you. APR: 18 Monthly Payment: 100 Loan: 1500
The answers weren't whole numbers. I memorized the inputs because I tested it so many times trying to figure out how to make it work. If you get answers that aren't even numbers I'll search through my homework to find the problem.