The usual case: %define rel 5 (...) Release: %mkrel %rel In case of snapshots or pre/rc versions: # define %snapshot to 0 for final release %define snapshot 20061105 %define rel 5 (...) %if %snapshot Release: %mkrel 0.%snapshot.%rel %else Release: %mkrel %rel %endif The naming of %snapshot does not matter. %rel should be a single number only, even when snapshot is used. There should be no multiple definitions of %rel inside %if blocks. %rel is used because we shouldn't redefine %release to something that is not the real Release (i.e. %mkrel'd one).