Values under 0 will be clamped by Color structure.
If you use cos or sin there half of lenght it will pulse others not.
If you want to pulse with pause try:
math.abs( math.cos( RealTime()*frequency )*waveLenght ) )
it will be positive everytime (0 is lowest)
Also try not completed fade:
local alpha = 127 + math.cos( RealTime()*frequency )*waveLenght
it will pulse from 127+waveLength to 127-waveLenght
This is useful when you need a fade but save visibility.
The first code with
math.abs almost same as:
local alpha = 127 + math.cos( RealTime()*frequency )*127
The fade will be from 127+127 (254 in total) to 127-127 (0 in total)
**Examples: **
Fades of (0,0,0) on (255,255,255)

Numbers of alpha was rounded
1. math.cos(CurTime()*2)*255
2. math.abs(math.cos(CurTime()*2)*255)
3. 127+math.cos(CurTime()*2)*50
4. math.abs(math.sin(CurTime()*2)*255)