Mmmm. I think I have a way, based on a script with $$Variable of old value. If old value is "Y" no change will be made to the field.
Self = "Y"; "Y"; // If the calculation previously evaluated to "Y" then keep it at "Y"
<your usual calculation goes here>
The calculation needs to be Stored for this to work.
If your Calculation field cannot be Stored due to it being dependent on Unstored fields or related fields, you can change it to a Text field with Auto-enter Calculation (replaces existing value).
Making the field a Text field with auto-enter Calculation is probably a better way to handle this situation. You don't want your data to be undone if the database needs to recalculate all of the Stored values in a Calculation field.