The "reset of the scale" flips and destroys my normals I had this mesh with these Normals: 



The column had a "wrong" scale 

 

and I wanted to set it to 1 1 1. 
Then I pressed Ctrl + a and scale.

The result was that:



The normals are upeset and destroyed (if I flip all with Ctrl + n the final result isn't good . . .  the normals, although flipped in the right direction, don't come back to the origin.



My question is: is there a way to set the scale (1 1 1), avoiding the total distorsion of the normals? Or maybe, am I making any mistakes?
It should work to duplicate your object, before applying scale, and use a Data Transfer Modifier to transfer the custom normals from the duplicate object to the corrected object:



Hopefully that does the trick.