diff --git a/src/all_sequences/base_sequences.jl b/src/all_sequences/base_sequences.jl
index e610e7bcec53377048187a09315e8629dd9dab5e..db04689d06ff8284ac52fe49ede9bba07a552bf1 100644
--- a/src/all_sequences/base_sequences.jl
+++ b/src/all_sequences/base_sequences.jl
@@ -21,7 +21,7 @@ Sub-types need to implement:
 abstract type BaseSequence{N} <: ContainerBlock end
 
 function Base.getindex(bs::BaseSequence{N}, index::Integer) where {N}
-    if index < 1 || index > length(bs)
+    if nrepeat(bs) > 0 && (index < 1 || index > length(bs))
         throw(BoundsError(bs, index))
     end
     base_index = ((index - 1) % N) + 1
@@ -29,7 +29,7 @@ function Base.getindex(bs::BaseSequence{N}, index::Integer) where {N}
 end
 Base.iterate(bs::BaseSequence) = Base.iterate(bs, 1)
 Base.iterate(bs::BaseSequence{N}, index::Integer) where {N} = index > length(bs) ? nothing : (bs[index], index + 1)
-Base.length(bs::BaseSequence{N}) where {N} = nrepeat(bs) * N
+Base.length(bs::BaseSequence{N}) where {N} = iszero(nrepeat(bs)) ? N : (nrepeat(bs) * N)
 Base.eltype(::Type{<:BaseSequence}) = ContainerBlock
 
 function start_time(bs::BaseSequence{N}, index::Integer) where {N}
diff --git a/src/all_sequences/sequences.jl b/src/all_sequences/sequences.jl
index af67159259080f8a0c28d957a394ef9a4240d380..99f759fbe50b09faf92b0089549957edc1fb52d4 100644
--- a/src/all_sequences/sequences.jl
+++ b/src/all_sequences/sequences.jl
@@ -20,10 +20,9 @@ Defines an MRI sequence from a vector of building blocks.
 struct Sequence{N} <: BaseSequence{N}
     blocks :: SVector{N, <:ContainerBlock}
     TR :: VariableType
-    nrepeat :: Int
 end
 
-function Sequence(blocks::AbstractVector; TR=:min, nrepeat=0)
+function Sequence(blocks::AbstractVector; TR=:min)
     if TR == :min
         TR = sum(duration, blocks; init=0.)
     end
@@ -36,8 +35,7 @@ end
 Sequence(blocks...; kwargs...) = Sequence([blocks...]; kwargs...)
 
 get_index_single_TR(s::Sequence, i::Integer) = s.blocks[i]
-Base.IteratorSize(::Type{<:Sequence}) = Base.IsInfinite()
-nrepeat(::Sequence) = Inf
+nrepeat(::Sequence) = 0
 
 """
     to_block(block_like)