|  | @@ -668,6 +668,10 @@ export abstract class MusicSheetCalculator {
 | 
	
		
			
				|  |  |          if (allMeasures === undefined) {
 | 
	
		
			
				|  |  |              return;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +        if (EngravingRules.Rules.MinMeasureToDrawIndex > allMeasures.length - 1) {
 | 
	
		
			
				|  |  | +            log.debug("minimum measure to draw index out of range. resetting min measure index to limit.");
 | 
	
		
			
				|  |  | +            EngravingRules.Rules.MinMeasureToDrawIndex = allMeasures.length - 1;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // visible 2D-MeasureList
 | 
	
		
			
				|  |  |          const visibleMeasureList: GraphicalMeasure[][] = [];
 | 
	
	
		
			
				|  | @@ -1359,7 +1363,10 @@ export abstract class MusicSheetCalculator {
 | 
	
		
			
				|  |  |          let relative: PointF2D = new PointF2D();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          if (multiTempoExpression.ContinuousTempo || multiTempoExpression.InstantaneousTempo) {
 | 
	
		
			
				|  |  | -            // TempoExpressions always on the first visible System's StaffLine
 | 
	
		
			
				|  |  | +            // TempoExpressions always on the first visible System's StaffLine // TODO is it though?
 | 
	
		
			
				|  |  | +            if (EngravingRules.Rules.MinMeasureToDrawIndex > 0) {
 | 
	
		
			
				|  |  | +                return; // assuming that the tempo is always in measure 1 (idx 0), this causes issues when we don't draw measure 1
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |              let staffLine: StaffLine = measures[0].ParentStaffLine;
 | 
	
		
			
				|  |  |              let firstVisibleMeasureX: number = measures[0].PositionAndShape.RelativePosition.x;
 | 
	
		
			
				|  |  |              let verticalIndex: number = 0;
 | 
	
	
		
			
				|  | @@ -2601,7 +2608,7 @@ export abstract class MusicSheetCalculator {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      private calculateDynamicExpressions(): void {
 | 
	
		
			
				|  |  |          const maxIndex: number = Math.min(this.graphicalMusicSheet.ParentMusicSheet.SourceMeasures.length, EngravingRules.Rules.MaxMeasureToDrawIndex);
 | 
	
		
			
				|  |  | -        const minIndex: number = EngravingRules.Rules.MinMeasureToDrawIndex;
 | 
	
		
			
				|  |  | +        const minIndex: number = Math.min(EngravingRules.Rules.MinMeasureToDrawIndex, this.graphicalMusicSheet.ParentMusicSheet.SourceMeasures.length);
 | 
	
		
			
				|  |  |          for (let i: number = minIndex; i < maxIndex; i++) {
 | 
	
		
			
				|  |  |              const sourceMeasure: SourceMeasure = this.graphicalMusicSheet.ParentMusicSheet.SourceMeasures[i];
 | 
	
		
			
				|  |  |              for (let j: number = 0; j < sourceMeasure.StaffLinkedExpressions.length; j++) {
 | 
	
	
		
			
				|  | @@ -2683,8 +2690,7 @@ export abstract class MusicSheetCalculator {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      private calculateTempoExpressions(): void {
 | 
	
		
			
				|  |  |          const maxIndex: number = Math.min(this.graphicalMusicSheet.ParentMusicSheet.SourceMeasures.length, EngravingRules.Rules.MaxMeasureToDrawIndex);
 | 
	
		
			
				|  |  | -        const minIndex: number = EngravingRules.Rules.MinMeasureToDrawIndex;
 | 
	
		
			
				|  |  | -        for (let i: number = minIndex; i < maxIndex; i++) {
 | 
	
		
			
				|  |  | +        for (let i: number = 0; i < maxIndex; i++) {
 | 
	
		
			
				|  |  |              const sourceMeasure: SourceMeasure = this.graphicalMusicSheet.ParentMusicSheet.SourceMeasures[i];
 | 
	
		
			
				|  |  |              for (let j: number = 0; j < sourceMeasure.TempoExpressions.length; j++) {
 | 
	
		
			
				|  |  |                  this.calculateTempoExpressionsForMultiTempoExpression(sourceMeasure, sourceMeasure.TempoExpressions[j], i);
 |