diff --git a/src/all_sequences/base_sequences.jl b/src/all_sequences/base_sequences.jl
index 11fbda0a2722da1f6c208a94c0e9ddac82962ca9..b6b4bbeb3a152c310a8a198f5eb85022807e68ad 100644
--- a/src/all_sequences/base_sequences.jl
+++ b/src/all_sequences/base_sequences.jl
@@ -75,7 +75,7 @@ TR(bs::BaseSequence) = duration(bs)
 
 
 duration(bs::BaseSequence{0}) = 0.
-duration(bs::BaseSequence) = sum(duration.(bs))
+duration(bs::BaseSequence) = sum(duration.(bs); init=0.)
 
 
 end
diff --git a/src/all_sequences/sequences.jl b/src/all_sequences/sequences.jl
index 0f7cbc2bdaf6f2c17f52e1941efa05913f5cb352..d58bf0a2aeb7a7bbacfef0a946a81f0fb4ea5a40 100644
--- a/src/all_sequences/sequences.jl
+++ b/src/all_sequences/sequences.jl
@@ -23,12 +23,14 @@ struct Sequence{N} <: BaseSequence{N}
 end
 
 function Sequence(blocks::AbstractVector; TR=:min)
+    blocks = to_block.(blocks)
+    actual_duration = sum(duration, blocks; init=0.)
     if TR == :min
-        TR = sum(duration, blocks; init=0.)
+        TR = actual_duration
     end
-    res = Sequence{length(blocks)}(SVector{length(blocks)}(to_block.(blocks)), get_free_variable(TR))
+    res = Sequence{length(blocks)}(SVector{length(blocks)}(blocks), get_free_variable(TR))
     if !(res.TR isa Number) || !(duration(res) isa Number)
-        @constraint global_model() res.TR >= sum(duration, blocks; init=0.)
+        @constraint global_model() res.TR >= actual_duration
     end
 end