There was one time (2006 at a company of less than 50 people) where I absolutely refused to build the new pricing features in a billing system (which would have been a big hack on a long series of smaller hacks) unless they let me refactor it (meaning rebuild it from scratch). After waiting for a few months without their new pricing features they finally gave in. That's at a young, nimble company where the co-CEO had a programming background. I can only imagine how hard a fight that would be at a larger, slower company.