hp-ux11i 64bit version

hi all,first apologize for my poor English
i have set a 1 to 1 read only snapshot replication enviroment, i updated 3000
rows of a table,the updated field is the primary key of this table.then i made
a fast refresh on the snapshot site,i use "exec
dbms_mview.refresh('table_name','f')" ,the statement proceed successfully.
but when i check the records on the snapshot of this table on snapshot site,i
found the snapshot contain both the old records and the new one,that means
if i updated the primary key value from 1 to 2 on master site table and then
refresh it,i would get both 1 and 2 on snapshot,not only record with PK 2,the
right result.
i have checked the mlog$_ views on master site and found before refresh,each
update operation was splitted into 2 records in mlog$ view,one is a D record
which means deleting the old one,the other is an I record which means Insert
the new one,so i guess the I records were performed successfully but D records
not,but i am wondering the reason.
i even made a test,1 table to 1 read only snapshot replication,i found when
update operation was not performed that much,the snapshot gave the correct result.
i can correct this problem by issue "exec dbms_mview.refresh('table_name','c')" command.but i still want to known the reason why this happen on fast refresh mode.

any comments will be appreciated!