Calculating value for first time a function is called

This is a common issue I keep running into. When I call a function which calulates a value using a changing variable for example:

void operateMotor(int move2percent) {
  int endCount = closePercent - move2percent;
  if (oldCurtainState == open) {
    myStepper.step(-10);
  }
  else if (oldCurtainState == closed) {
    myStepper.step(10);
  }
  counter = counter + 10;
  if (counter >= (endCount)) {
    endOfMovement();
  }
}

I only want to calculate the first line

int endCount = closePercent - move2percent;

on the first instance that the function is called.

I have previously used a simple bool called first which is reset on the completion of the movement but I wondered if there was a more elegant way?

static int endCount = closePercent - move2percent;
    static int endCount = 0;
    if (0 == endCount)
        endCount = closePercent - move2percent;

No need for the if() statement. Local static variables are only initialized the first time control passes through the point were they are defined.

Sorry I don't think I've made it quite clear. The function is called to rotate a stepper motor and therefore a curtain to a location. To make the stopper non blocking it moves 10 steps at a time. When it gets to the end it stops until another command is sent. When the new command is sent I want to recalculate the value

gcjr:

    static int endCount = 0;

if (0 == endCount)
        endCount = closePercent - move2percent;

Actually think about it more I think this would work for my solution. I will give it a go a let you know