North Carolina Republican congressional candidate Dan Bishop celebrates his victory in Monroe, N.C., on Sept. 10 with his son Jack, left, and wife, Jo. (Nell Redmond/AP)

Barring some dramatic development, North Carolina state Sen. Dan Bishop (R) will head to Washington shortly to represent the state’s 9th District in Congress. The caveat at the front end of that sentence is an important one: The last election in that district was thrown out after apparent absentee ballot fraud tainted the results. This one seems likely to stick, however, giving Bishop a 2.1-point victory over Democrat Dan McCready.

There is a tendency to seize upon special elections like this one the way an ancient augur would goat entrails. What might we divine from what happened in North Carolina about, say, the 2020 presidential race? What trends, what surges or retreats happened there that might tell us what will happen in 14 months in rural Michigan? What will this little flap of a butterfly’s wings yield?

Let us dig in.

North Carolina’s 9th District covers all of five counties in the state and part of three others. While Mecklenburg County is the smallest part of the district in terms of land area, it’s the county in the district where the most voters live.

The part of Mecklenburg that the 9th District covers is heavily suburbs of Charlotte, and it went for McCready by 12 points on Tuesday. The next most populous county is Union, just to the southeast. It went for Bishop by 21 points. (N.B.: All election results for 2019 are preliminary.)


(Philip Bump/The Washington Post)

Bishop won four counties, with his 2.1-point victory dependent heavily on those results from Union County. Outside of Union County, Bishop lost the race by 6.6 points.


(Philip Bump/The Washington Post)

Unfortunately for McCready, Union County exists. And, in fact, it went slightly more heavily for the Republican this time around than it did in the thrown-out 2018 general. That shift though was minor — particularly compared to several other shifts in the Republicans’ direction.


(Philip Bump/The Washington Post)

Those three counties — Cumberland, Richmond and Robeson — shifted to the GOP’s advantage by five, seven and 14 points respectively. Richmond and Cumberland flipped from blue to red, while Robeson went from dark blue to light blue. In 2018, McCready (also the Democratic nominee at that point) won it by 15 points. On Tuesday, he won it by one.


(Philip Bump/The Washington Post)

Combined, those three counties made up about a quarter of the total vote that was cast.

So why those shifts? One theory is that turnout increased in rural areas, perhaps as a function of President Trump’s last-minute stop in the area on Monday night. Trump held a rally in Fayetteville, in Cumberland County.

But that doesn’t map neatly with the results. Census Bureau data on the density of the rural population in each county show that the county where McCready did best, Anson County, is more than three-quarters rural. Anson County is also nearly half black, however. Bladen County, the most rural of the eight counties in the 9th District, is only a third black, and there Bishop won by 19 points.


(Philip Bump/The Washington Post)

More heavily rural counties did shift more Republican on Tuesday relative to 2018 — but there’s not a strong correlation between how rural a county was and how big the shift was.

Most of the seats the Democrats picked up last year were suburban. New Jersey’s 3rd District, which flipped to the Democrats in 2018, has about the same mix of rural, urban and suburban populations as determined by CityLab’s Congressional Density Index, and a relatively similar demographic profile.

Mecklenburg is the only county that voted more heavily Democratic, a change that has been seized upon to suggest that the Republican Party’s problems with suburban voters in 2018 are continuing or worsening.


(Philip Bump/The Washington Post)

But here we see how dramatic an outlier Robeson County was. Is there a lesson to be learned from how the Republicans managed to do so much better there?

Perhaps, but Robeson County is unusual in its own way. It’s home to members of the Lumbee tribe, helping the 9th District to be one of the most densely Native American districts in the country. The status of the tribe federally is murky, as The Washington Post reported last year, but it’s recognized by North Carolina.

As Cook Political Report’s Dave Wasserman points out, Bishop co-sponsored legislation earlier this year that would give the tribe more access to state grant money. It’s the sort of thing that might have an effect in a county that the Census Bureau estimates is nearly 40 percent Native American.

That shift in Robeson County, though, didn’t by itself give Bishop his victory. If Robeson had voted at the same margins as it did in 2018, Bishop would still have won, by about a half-percentage point. If every county had voted at the same margins as it did in 2018, Bishop’s victory would have been about 0.46 points.

A key difference between this week’s special election and last year’s general was turnout. In 2016, then-incumbent Rep. Robert Pittenger (R) won his seat by about 16 points. Last year, Mark Harris (R) won by only 0.3 points. The Democrat got about the same number of votes in 2016 as in 2018, while Harris got more than 50,000 fewer votes.


(Philip Bump/The Washington Post)

That’s an interesting aspect to the special election results. Even though turnout was 33 percent lower than in last year’s general election, the results were about the same. Normally, drops in turnout mean shifts in the results, something we didn’t see in the 9th District race.

The smallest drops in turnout were in the two counties with the most voters, Mecklenburg and Union. The biggest drop in turnout? Cumberland County, where Trump held that rally.


(Philip Bump/The Washington Post)

That’s not to say that Trump’s visit didn’t have an effect. As MSNBC’s Steve Kornacki notes, early voting made up less of the total vote on Tuesday than it did last November — but it made up much less of Bishop’s total vote than McCready’s.


(Philip Bump/The Washington Post)

McCready got 48 percent of his total from the early vote. Bishop got 38 percent of his. McCready won the early vote by 7,400 votes and lost Election Day by 11,300. The county where the change in the importance of the Election Day vote was greatest since 2018? Cumberland County, where Election Day votes made up 49 percent of the vote in 2018 and 69 percent of the vote on Tuesday. (The next biggest drop was in Bladen County, right next door.)

Back to the big-picture question. What does this tell us about 2020?

The short answer is that it’s hard to say. It’s clearly the case that the district voted more heavily Democratic than it did in the 2016 House race or in the presidential contest that year. Trump won the 9th District by about 12 points, 10 points better than Bishop. His team might be worried about the Mecklenburg suburbs — but also about Union County, which voted about 10 points more Democratic on Tuesday than it did in the 2016 presidential contest.

Cumberland, Anson and Bladen counties ended up voting about as heavily Republican on Tuesday as they did for Trump, but that’s fewer than 57,000 voters. About 109,000 people in the Mecklenburg-9th District overlap voted in the 2016 presidential race, according to Daily Kos analysis.


(Philip Bump/The Washington Post)

Without knowing which 30,000 Mecklenburg-9th District voters cast ballots last November without voting in Tuesday’s special election, though, it’s tricky to read too much into it. The 2020 general election turnout will certainly be more robust than a special congressional contest.

That’s the problem with augury. Sometimes the entrails aren’t as easy to read as you’d like.