public Optional<Distance> verticalDistAtHorizontalClosureTime(Instant time) {
        Optional<Duration> timeUntilClosure = timeUntilHorizontalClosure(time);

        //not closing in the horizontal direction
        if (!timeUntilClosure.isPresent()) {
            return Optional.empty();
        }

        Speed closureRate = verticalClosureRateAt(time);
        Distance startingSeparation = verticalSeparationAt(time);
        Distance distanceClosed = closureRate.times(timeUntilClosure.get());

        return Optional.of(startingSeparation.minus(distanceClosed).abs());
    }
@Test
    public void testVerticalDistAtHorizontalClosureTime() {

        //increasing vertical separation...
        Distance[] verticalDistances = new Distance[]{
            Distance.ofFeet(200),
            Distance.ofFeet(300),
            Distance.ofFeet(500)
        };

        //decreasing horizontal separation...
        Distance[] horizontalDistances = new Distance[]{
            Distance.ofNauticalMiles(1),
            Distance.ofNauticalMiles(.5),
            Distance.ofNauticalMiles(.25)
        };

        SeparationTimeSeries instance = new SeparationTimeSeries(
            times(),
            verticalDistances,
            horizontalDistances
        );

        assertEquals(
            Distance.ofFeet(400), //200ft + 200ft in new "closure"
            instance.verticalDistAtHorizontalClosureTime(EPOCH.plusSeconds(0)).get()
        );
        assertEquals(
            Distance.ofFeet(220 + 180), //220ft + 180 in new "closure"
            instance.verticalDistAtHorizontalClosureTime(EPOCH.plusSeconds(1)).get()
        );
        assertEquals(
            Distance.ofFeet(300 + 400), //300 ft + 10 seconds @ 200ft every 5 sec
            instance.verticalDistAtHorizontalClosureTime(EPOCH.plusSeconds(5)).get()
        );
        assertEquals(
            Distance.ofFeet(380 + 320), //380 ft + 8 seconds @ 200ft every 5 sec
            instance.verticalDistAtHorizontalClosureTime(EPOCH.plusSeconds(7)).get()
        );
        assertEquals(
            Distance.ofFeet(500 + 200), //500ft + 5 seconds @ 200ft every 5 sec
            instance.verticalDistAtHorizontalClosureTime(EPOCH.plusSeconds(10)).get()
        );
    }