allora ho un problemino

ho letto la guida di fseek e ho scritto il seguente codice

Codice PHP:

$a 
fopen('ciro.xml',"r+");
fseek($a,-21,'SEEK_END');
fwrite($a,"pippo\n");
fclose($a); 
21 byte è la dimesione del testo , in termini di byte, che si trova alla fine del file prima del quale voglio inserire del testo

quindi nel mio file ho
codice:
testo1
testo2
testo3
(qui devo inserire il nuovo testo)
..21 byte di testo
leggendo la guida di fseek esce fuori che il file deve essere aperto in modalità r+ perchè se lo apro con append, il cursore si posiziona sempre alla fine del file. se lo apro con r+ però mi sovrascrive il testo

come posso rimediare?