I don't think you can do it with the Fade behavior.
Use opacity with events:
Add an instance Boolean Variable to your object( i'll name the object "myOpaqueObject"), for example "opaque" and set the default value to true
Add an instance Number Variable, for example "FadingTime" and set its value to something appropriate (I'll use 120).
In the event sheet create two conditions that check and decide if the object should be opaque or not.
For example:
If myOpaqueObject is overlaping with "something" ===>myOpaqueObject | Set opaque to True
If myOpaqueObject is not overlaping with "something" ===>myOpaqueObject | Set opaque to False
Then add the events that will control the fading, depending on the booleans true/false state:
If myOpaqueObject is opaque ===> myOpaqueObject |set opacity to self.Opacity + 1 * FadingTime * dt
If myOpaqueObject is not opaque ===>myOpaqueObject | set opacity to self.Opacity - 1 * FadingTime * dt
By multiplying with 120 and dt you are ensuring that the fade will last 2 seconds regardless the frame rate of the game. Use multiples of 60 for every second you wish to add (for example 60*dt will last 1 second, 120*dt will last 2 seconds, 180*dt =3 seconds and so forth...) You can effectively control the FadingTime with events (actions/instance variables/set value) to change the fading time.