I remember when I had ~3 years of working experience. We were on the tail end of a fixed price/fixed date contract. There was a bug that needed to be fixed, and it was in a module that everybody had worked on, and the code was pretty bad.
So during the meeting, I said: that bug is just a sympthom, the module needs to be rewritten. And I knew what I was talking about.
No, said a senior, we're just going to fix the bug, no rewriting. I said that's your call, but I sure am not going to fix that bug. I can tell you: nobody listened to me.
So he more or less finished the discussion and said: I'm going to sit down with you, and we're going to fix that bug. And we did.
In that case there clearly is a good reason though? In the scenario described, you have one known bug, in the case of a rewrite you have an unknown number of bugs. Surely, both approaches may have more unnoticed bugs in them but in the former case people have already tested the solution so that's less likely. When you rewrite, you enter new untested territory with more room for new bugs.
So during the meeting, I said: that bug is just a sympthom, the module needs to be rewritten. And I knew what I was talking about.
No, said a senior, we're just going to fix the bug, no rewriting. I said that's your call, but I sure am not going to fix that bug. I can tell you: nobody listened to me.
So he more or less finished the discussion and said: I'm going to sit down with you, and we're going to fix that bug. And we did.
At that point it was the right call.