There is a curious comment in the VarLag class definition: “// Then \exp warp should probably behave as Lag ugen.”

Lag is *not* the same as exponential mapping, however.

An EnvGen segment with exponential curvature takes the corresponding linear segment and LinExp-s it. So the curvature is always pulling toward the 0 line, in either direction.

Lag operates by “go x% toward the target,” so if new target < old input, the curvature pulls down; if new target > old input, the curvature pulls up.

```
(
{
var freq = 20, lagtime = 0.4 / freq;
var src = LFPulse.kr(freq) + 1;
var lag = Lag.kr(src, lagtime);
var explag = VarLag.kr(src, lagtime, warp: \exp);
var envgen = EnvGen.kr(
Env([src, src], [lagtime], \exp),
gate: HPZ1.kr(src).abs
);
[lag, explag, envgen]
}.plot(0.25);
)
```

Or am I missing something?

I kind of think the comment should be deleted – if someone tried to implement it as an optimization, it would break compatibility.

hjh