Double check your logic vs my example. Terminate ends the current instance, but if you have a modify action, it will trigger the flow to run again.
open excel and get a friend to shout "it changed" every single time cell A1 changes, and get another friend to set A1 to the current time any time the first friend shouts "it changed!" Then, change cell A1. What happens? Your friends are going to be there for a while, as friend 1 shouts "it changed!", friend 2 updates cell A1, at which point friend 1 shouts "it changed!" again. If you tell friend to update cell A1 and then stop, it doesn't matter, as they are still instructed to change Cell A1 anytime the other friend shouts.
We can get the one friend to shout "it changed by xyz", shouting the name of who changed it, have friend 2 only update cell A1 with the current date if the person who changed it was someone else besides them (people will often use service accounts in flow, and they will check to see if the person who changed the item was different than the service account). Or, as previously suggested, we can use some other field to know if a particular field changed. In this example, the friend can also shout the value of B1 and B2, and friend 2 can then update A1 only if B1 and B2 are different. When friend 2 updates A1, they would also set B1 and B2 to be the same, which means friend 2 won't update A1 unless some other process runs and changes the value of B1 or B2.
Sorry if the analogy got out of hand. Hope that makes sense.