Confidence interval and p value from prop.test() in R contradict each other I am running the following simple Z test for proportions in R:
prop.test(x = c(10, 20), n = c(100, 500))

The results are as follows:
2-sample test for equality of proportions with continuity correction

data:  c(10, 20) out of c(100, 500)
X-squared = 5.1158, df = 1, p-value = 0.02371
alternative hypothesis: two.sided
95 percent confidence interval:
 -0.007256322  0.127256322
sample estimates:
prop 1 prop 2 
  0.10   0.04 

How is it possible for the p value of the Z test to be below 0.05, but for the 95% confidence interval to straddle zero? I've found this question on the behaviour of the prop.test function itself and this one on the alternative ways of constructing the CI but I don't think either explains what's going on in this case.
The top answer to this question suggests I'm right in thinking this output should be impossible!

I think one difficulty may be in the normal (or chi-squared) approximation for relatively small sample sizes. Also, the 'test' part of the output uses the null hypothesis $p_1 = p_2$ to get a pooled estimate for the standard error, whereas the '95% CI' does not assume $p_1 = p_2.$
Fisher's exact test fails to reject the null hypothesis at the 5% level.
TAB = rbind(c(10,20), c(90,80))
TAB
     [,1] [,2]
[1,]   10   20
[2,]   90   80

fisher.test(TAB)

        Fisher's Exact Test for Count Data

data:  TAB
p-value = 0.07343
alternative hypothesis: 
 true odds ratio is not equal to 1
95 percent confidence interval:
 0.1754757 1.0691978
 sample estimates:
 odds ratio 
  0.4462223 

Also, prop.test in R is roughly equivalent to using a
chi-squared test on the $2\times 2$ table. With Yates'
continuity correction, this procedure does not reject.
chisq.test(TAB)

        Pearson's Chi-squared test 
        with Yates' continuity correction

data:  TAB
X-squared = 3.1765, df = 1, p-value = 0.07471

