Enésimo termo da sequência Fibonacci sem recursividade em C

O programa a seguir calcula e exibe um elemento da sequência Fibonacci. O programa foi construído sem o uso de recursividade.
O que deixa o código um pouco menos elegante, mas evita certas limitações da recursão frente à valores muito altos.

fib

//================================================================
// Descricao: O programa calcula e mostra o enésimo termo
//            da sequência Fibonacci sem uso de recursividade.
//================================================================

// Bibliotecas
#include <stdio.h>
#include <stdlib.h>

// Protótipo da função fibonacci
int fibonacci(int n);

// Função Principal
int main(int argc, char** argv) {
	int n;

    // Lê a posição do termo
    printf("Digite a posicao: ");
    scanf("%d", &n);

    // Imprime o termo
    printf("O termo: %d\n", fibonacci(n));

    system("pause");
    return 0;
}

// Função Fibonacci
int fibonacci(int n) {
	int anterior = 0,
		proximo = 1,
		aux,
  		i;

	// Se for o primeiro número da lista
	if(n == 1) {
		return 0;
	// Se for o segundo número da lista
 	} else if(n == 2) {
 		return 1;
	// Se for um número a partir da terceira posição
  	} else {
  		// Calcula os valores dois a dois até chegar na posição requerida
		for(i = 3; i <= n; i++) {
			aux = proximo;
			proximo = anterior + proximo;
			anterior = aux;
		}
		return proximo;
  	}
}