diff --git a/src/components/pulses/constant_pulses.jl b/src/components/pulses/constant_pulses.jl
index a15ea306d0756756a5fae13fb6944fbb6e762220..96043358dae5a6faf394b1f740e66c92fda24ae4 100644
--- a/src/components/pulses/constant_pulses.jl
+++ b/src/components/pulses/constant_pulses.jl
@@ -64,10 +64,10 @@ end
 
 split_timestep(pulse::ConstantPulse, precision) = Inf
 
-function adjust_internal(block::ConstantPulse; scale=1., frequency=0.)
+function adjust_internal(block::ConstantPulse; scale=1., frequency=0., stretch=1.)
     ConstantPulse(
         block.amplitude * scale,
-        block.duration,
+        block.duration * stretch,
         block.phase,
         block.frequency + frequency,
         block.group,
diff --git a/src/components/pulses/generic_pulses.jl b/src/components/pulses/generic_pulses.jl
index 856bf8a13709a89b50ab45b21b0a92d7dbec8b9a..df4b580bb4945341da7eb268c0f36fda2119c6da 100644
--- a/src/components/pulses/generic_pulses.jl
+++ b/src/components/pulses/generic_pulses.jl
@@ -153,9 +153,9 @@ function split_timestep(gp::GenericPulse, precision)
     return sqrt(2 * precision / max_second_der)
 end
 
-function adjust_internal(block::GenericPulse; scale=1., frequency=0.)
+function adjust_internal(block::GenericPulse; scale=1., frequency=0., stretch=1.)
     GenericPulse(
-        block.time,
+        block.time .* stretch,
         block.amplitude .* scale,
         block.phase .+ (360. * frequency) .* (block.time .- effective_time(block))
     )
diff --git a/src/components/pulses/sinc_pulses.jl b/src/components/pulses/sinc_pulses.jl
index 8ced23fc54ed380ef1b8225650006b11beee8df2..1fb52aee5f4b4ddf2ec8c133918aff7b5bf37ce9 100644
--- a/src/components/pulses/sinc_pulses.jl
+++ b/src/components/pulses/sinc_pulses.jl
@@ -107,7 +107,7 @@ function split_timestep(block::SincPulse, precision)
     return sqrt(2 * precision / max_second_derivative)
 end
 
-function adjust_internal(block::SincPulse; scale=1., frequency=0.)
+function adjust_internal(block::SincPulse; scale=1., frequency=0., stretch=1.)
     SincPulse(
         block.apodise,
         block.Nzeros,
@@ -115,7 +115,7 @@ function adjust_internal(block::SincPulse; scale=1., frequency=0.)
         block.amplitude * scale,
         block.phase,
         block.frequency + frequency,
-        block.lobe_duration,
+        block.lobe_duration * stretch,
         block.group
     )
 end