You probably have fermented all the fermentables you extracted then. Without seeing your recipe and you temps it's really hard to tell.
But remember there's no sin in a 1.020 beer. If it's finished it's finished.
Revvy, I have virtually the same problem, but I have all the info. So, allow me to highjack this thread, if I may.
8 lbs. Maris Otter info
.75 lbs. 2-Row Caramel Malt 40L info
.25 lbs. Belgian Special B info
.25 lbs. Chocolate Rye Malt info
.5 lbs. Cara-Pils® Malt info
Yeast : WYeast 1084 Irish Ale info 1L Yeast starter
BIAB method, Mash @ 152F for 60 min. Iodine test shows conversion, sparge @ 170F to get 5.5 gallons gravity @ 1.041
60 min boil, cool and rack to carboy, top up to 5 gal with 4 cups water, gravity at 1.044.
1L Yeast starter pitched into @ 75F wort (should have just pitched the slurry, I know). Placed in swamp cooler with chilled water with intent to lower to 62F, but it got down to 54 after 6 hours. I nixed the ice, the temp started rising an signs of fermentation began at 6 hours, with the krausen formed and vigorous fermentation starting about 30 hours later and lasted about 48 hours, temp never gets above 63F. As the krausen started dropping, the fermenation slowed but was steady for 2 more days. On the fourth day let temp rise to 64F and began to rouse the yeast daily.
refractometer reading 1.020 after 7 days with temp at 64F, another reading 24 hours later was unchanged, raise temp over two days to 68F, today's reading still 1.020; The sample does not taste overly sweet.
Its not that I can't live with a batch of 3.1% beer, but I would feel better if I could be reasonably sure there weren't any fermentable sugars remaining. It is hard to imagine I only got 53% attenuation considering how vigorous the fermentation was. But this is the first time I have tried to ferment by chilling the wort, so I'm not sure what to expect.