
First published on 25 July 2003 The last laugh DOUG Bower , who claims to have been Britain 's first crop circle hoaxer , has been on the Marlborough Downs showing a Japanese film crew how it 's done . Mr Bower and his late friend Dave Chorley became famed as Doug and Dave when they claimed ten years ago that they had produced most of the crop circles for many years . The Southampton pair appeared on TV programmes showing how they made the cornfield patterns with trampling devices made from pieces of wood and rope . They managed to achieve the complex patterns , they said , with the aid of wire sights on the peaks of baseball caps . Mr Chorley died a couple of years ago but by that time the pair had long given up going out under the cover of darkness to make crop circles all over the South of England . On Thursday Mr Bower , who is now 79 , showed a Japanese film crew making a documentary how he could still make a crop pattern using the same piece of wood and rope he started out with in the late 1970s . The film company , Media Nations Inc , is making a documentary about Doug and Dave and their claim that they were the first people in the UK to make crop circles . And it paid dozens of local people £ 50 a day to act as extras . At the end of the first day 's filming Mr Bower , an artist and picture framer , told the Gazette that the only crop patterns that could be found until he and Mr Chorley teamed up were simple circles and swirls made by gusts of wind . Mr Bower said he had spent eight years living in Melbourne in Australia . " It was while I was there in 1962 that I read about three circles appearing on a farm at Tulley in Queensland , " he said . He returned to England in 1966 to live at Southampton where he opened an art gallery and became friendly with fellow painter Mr Chorley . Mr Bower said : " We got to know each other well because we had the same interests and were both artists . " They went out and about together painting on location and , said Mr Bower , it was while walking in fields near Winchester in 1978 that the idea of making crop circles came up in conversation . That was the start of Britain 's first crop circle making team . " Until then all the so-called crop circles had been the result of wind damage , " said Mr Bower . On evenings over the next 14 years they travelled hundreds of miles from their homes in Southampton to make elaborate patterns in cereal crops as far away as Gloucestershire and Oxfordshire . Meanwhile they sat back and laughed , said Mr Bower , as so called experts began giving reasons for the crop circles ranging from inter-galactic messages to UFO landings . Mr Bower , who is still sprightly , said : " We went as far as Eastbourne in the east and as far north as Wantage making crop circles at every opportunity we had . " Sometimes , he said , they would make several in a night before returning home to Southampton by dawn , tired but ecstatic at the way they had the world hoodwinked . He said : " We made a lot in Wiltshire because that is where the most fuss was being made about them because of the Avebury and Stonehenge link . " We used to work out the designs on paper so that we knew what we would be doing when we got to a suitable field . " I still have those original designs which prove how early we started making them . " Mr Bower said he and his friend used to spend the winter in his studio planning bigger and more complex patterns to make the following summer . " For 14 years we had everyone fooled , we were the only ones making the patterns although of course we never let on , " said Mr Bower . He said one reason they continued for so long without telling the world what was causing the mysterious crop pictograms was to poke fun at the establishment and the many so-called experts who expounded serious and complex reasons for the phenomenon . " We did it for 14 years without anybody being able to prove they were man-made , " he said . " Our big reward was in winding up those people who regarded themselves as experts and claimed they knew what was causing them . " We knew what was causing them , it was us , and at that time we were the only people making them . " Mr Bower said nowadays there are a number of teams competing to see who can make the biggest and most complex patterns . The documentary was filmed on Richard Hues ' land at Stanton St Bernard and the farmer was compensated by the Japanese production company for the damage to his crop . Among those paid to act as extras was Marlborough mum Bryony Sutton and her 20-year-old daughter Rosie . Both had just completed a film making course at Swindon College and were interested in seeing how the professionals worked . Mrs Sutton said : " The director recruited extras from the Barge Inn at Honeystreet and from some other places and we spent three days filming at Alton Barnes and Stanton St Bernard . " Rosie played a journalist ostensibly reporting on the crop circle mania . Mrs Sutton said : " The film crew and the director were all fine , they were very sweet . " There was a terrible problem though with the language barrier which caused a few difficulties to start with . " They spoke little English and our Japanese was non existent but it was all a good laugh . " The programme will be show on Nippon TV in Japan but may be syndicated worldwide . Back to 2003 index 