When mouse1 is put down you changed a clientside variable to true and set the [insert time frames used in source engine here] time, then in the game loop you checked every time to see if it's still true, and hasn't changed since last time (just incase someone has REALLY quick hands / lag) then you multiply the value by 1.05/1.07. This way as you hold it down for longer the accuracy degrades. The factor of multiplication may need to be different for every
Of course this should take into account all the other factors that is currently in place, but just a basic idea.
This should decrease accurace more and more as you hold it down. If the game loop is not scaled to be accurate for all clients, implement it into the same section as movement so it behaves the same on clients with more/less powerful processors