Around the time M 33 passed highest in the sky, the stars in the corners of my Seestar S30 Pro frames came out stretched. Was it bad seeing, a tracking hiccup, or something else? It was field rotation: in alt-azimuth mode the sky slowly turns in the frame, and near the meridian it turns fast enough to drag corner stars into short arcs during a single 10-second frame. Rotation accounts for essentially all of the extra stretch (measured, on one night so far).
On one alt-azimuth night of M 33 (291 ten-second frames, highest altitude 83°), the tangential elongation of corner stars peaked near the meridian. Regressing the per-frame stretch on the squared field-rotation rate, airmass terms and drive drift, the rotation term takes 109 ± 4 % of the peak excess, altitude −4 ± 4 %, drift −1 ± 1 % (measured), and chromatic refraction is bounded below 0.1 % (predicted). The pattern is tangential and grows as r² about the frame center, as intra-exposure rotation smear should. Exploratory: one night, one unit, not yet repeated on fresh data.
One pixel on the S30 Pro covers 3.67 arcseconds of sky (an arcsecond, ″, is 1/3,600 of a degree). Everything on this page comes from my own frames.
On the night of 18 to 19 September 2026 I imaged the Triangulum Galaxy, M 33, for about five and a half hours with my Seestar S30 Pro in its normal alt-azimuth mode, in 10-second frames (sub-frames, or "subs"). M 33 climbed to 83°, almost overhead. When I looked at frames near that highest point, the stars in the corners were no longer round: they were stretched, and the stretch went around the frame center like the rings of a target, not all in one direction (measured).
Stretched stars usually get blamed on three things: the air (bad seeing), the mount (a tracking error or a wobbly tripod), or focus. I wanted to know which one this was, because the answer decides what you should do about it.
Data: 291 plate-solved 10-second frames of M 33 from one S30 Pro, alt-azimuth mode, IR-cut filter, the night of 2026-09-18/19 UTC, altitudes 54° to 83°. For each frame I measured adaptive second moments (Cxx, Cyy, Cxy) of isolated Gaia stars and fit the spin-2 elongation field D = (Cxx − Cyy, 2Cxy) with three components: a tangential term kt(r/rc)² about the sensor center, a uniform term along the true vertical, and a uniform sensor-fixed term. Here rc = 2,203 px is the half diagonal, so kt is the tangential-minus-radial second moment at the corner, in px². On 59 frames I did this in all five color sets (G, G1, G2, R, B); for the budget below I used the green moment slope on all 291.
The four candidates make different patterns. Refraction, dispersion and gravity flexure follow the true vertical. Drive errors follow axes fixed to the sensor. Rotation smear is tangential about the center and grows as r². Because my base was not level, the true vertical swung 31° across the sensor during the night (measured), which is the lever that separates the vertical-following causes from the sensor-fixed ones.
An alt-azimuth mount follows a star by moving up-down (altitude) and left-right (azimuth). It keeps the target centered, but it doesn't turn the camera, and the sky does turn: seen from a fixed camera, the star field slowly rotates around the target. This is field rotation. Every alt-azimuth telescope without a rotating camera mount has it, whatever the brand.
The turning is slow most of the time and fastest when a target passes high overhead near the meridian (the north-south line through the zenith, the point straight overhead; a target is highest when it crosses it). During one frame the field turns a tiny angle about a turning point near the middle of the frame, so stars near the middle barely move, while stars in the corners sweep out a short arc. The longer the frame and the farther from the center, the longer the arc. Stacking software lines frames up afterward, which removes the turning from one frame to the next, but it can't undo the arc smeared inside each frame (inferred).
For a level alt-azimuth mount, the field turns at ω = ω⊕ cos φ cos A / cos h, with ω⊕ = 15.04″/s the sidereal rate, φ the latitude, A the azimuth and h the altitude. It diverges as h → 90° at A = 0, so a target crossing the meridian near the zenith turns fastest. In an exposure T a star at distance r from the turning point moves along an arc of length L = ωTr. For a uniform (top-hat) arc the tangential second moment grows by L²/12 while the radial one doesn't change, so the predicted corner stretch is kpred = (ωT rc)²/12 (fixed in advance from geometry).
I took ω from the change of the plate solutions' roll angle between neighboring frames (smoothed), not from the formula. My tilted base makes the formula only approximate: the measured rate peaked at 118″/s about 20 minutes before the highest point, against 101″/s by the level-mount formula (measured). Over the night the roll-based rate tracks the measured stretch far better (r 0.97 against 0.71).
The chart follows the whole night, with the moment M 33 was highest at zero. The dots are how much more stretched the corner stars were in each frame than on the quiet frames far from the meridian (measured). The line is what field rotation alone predicts from how fast the frame was turning, worked out from geometry with nothing adjusted to fit (predicted). The two rise and fall together. At the peak the dots sit about a third above the line; that comes from how I measure stretch, and it's covered under "What's still open" below. Switch to "Turning rate" to see the cause: the field turned about 70 times faster near the top than at the start of the night (measured).
Measured kt per frame (green, adaptive moments) minus its median on 116 quiet frames (rate < 5″/s; that median is −0.87 px², a static offset already present on still frames), against kpred from the roll rate. On the 59 frames measured in all color sets, the partial correlation of kt with ω² given sec z and sin h is 0.98, and with sec z or sin h given ω² it is 0.00 (measured). The measured peak runs above the 1× prediction: a linear fit of kt on kpred gives slope 1.32 (r 0.97). I read that overshoot as a property of the moment estimator rather than extra physics, because every color plane shows it and a forward-model arc fit does not (inferred); see the open questions.
To split the blame fairly, I let each suspect explain as much of the stretch as it could, all at the same time, and then asked how much of the bump at the meridian each one accounts for. Rotation takes all of it: 109 %, give or take 4 (measured). The small negative shares for the others just mean they nudge slightly the other way; within the error bars rotation is the whole story, and "109 %" means "all of it", not "more than all of it".
The air gets its own line because I didn't fit it: I computed it. Air bends blue light a little more than red, so near the horizon a star becomes a tiny vertical rainbow. At the altitudes of this night, that effect is thousands of times too small to matter (predicted). The mount's tracking drift between frames is also far too small (measured).
The second view is the cleanest test. Because my tripod wasn't level, the field turned at different speeds before and after the highest point, at the same height in the sky. Pairs of frames at the same altitude, and so through the same air, still differed in stretch, and the differences followed their turning rates closely (measured; they run about 1.4 times the simple prediction, the same measuring quirk as in the night chart).
Budget (291 frames): ordinary least squares of kt on [ω², sec z, sin h, v²], with v the frame-to-frame drift speed of same-pointing frames. The share of driver j is cjΔxj/Δy, where Δ is the mean over the peak window (frames within 30 minutes of the highest point) minus the mean over the baseline (the lowest-altitude quarter of frames); Δy = 5.95 px². sec z and sin h are collinear here (r −0.998), so their shares are reported summed. Errors are the spread over 400 bootstrap resamples of frames. Rotation 109 ± 4 %, altitude −4 ± 4 %, drift −1 ± 1 %, unexplained −4 ± 3 % (measured). The 1× prediction with no fitted coefficient gives 82 % of the peak (predicted, then compared). The peak and baseline windows were chosen during the analysis, not before it.
Direction: the uniform part of the elongation has a median of 0.30 px² with 0.87 px² rms scatter, and its angle does not follow the true vertical (slope −0.01 while the vertical swings 31°), so it is sensor-fixed rather than atmospheric or gravitational (measured). Atmosphere: differential chromatic refraction across the green band, computed with a standard refraction model at the frame's pressure, temperature and humidity and the filter and sensor response, adds at most 0.0019 px² of second moment against up to 12.4 px² of smear, a ratio below 2×10−4 (predicted). Drive: same-pointing frame pairs drift a median 0.08 px/s, a translation smear of 0.06 px² (95th percentile 0.29), and drift periodograms over 60–3,000 s show no period shared between targets (measured).
Matched pairs: 143 frame pairs at equal altitude (|Δh| < 0.25°) on opposite sides of the meridian differ in rate because of the tilt; Δkt against Δkpred has slope 1.39 and r 0.96. Thirty pairs at equal rate (within 4 %) but 3° to 12° apart in altitude show r(Δkt, Δh) = −0.06 (measured).
Many tools judge seeing, focus or frame quality from the average star size over the whole frame, its FWHM (full width at half maximum: how wide a star is at half its peak brightness). Near the meridian that number is fooled. Corner stars smeared into arcs look fat, so the whole-frame star size jumped by half at the fastest turning, while stars near the center, which barely move, stayed within 7 %, and were only 4 % up in the bin where the whole-frame size peaked (measured, exploratory). Earlier checks of mine had read that bump as bad seeing or drifting focus. When I re-scored them on center stars only, every fast-turning frame my whole-frame rule had flagged as "bad seeing" came out fine: 24 flags became 0 (exploratory).
This part is a re-check of the same nights, not a fresh test. It shows the old readings didn't follow from their own data; it doesn't yet prove anything on a new night.
Center-star width (defined before any center-star number was computed): per frame, the median Gaussian FWHM of stars with G < 12.5 within 700 px of the turning point, at least five stars. On M 33 this center-star width correlates with the turning rate (here the level-mount formula rate) at r 0.11, against 0.76 for stars beyond 1,500 px and 0.63 for the whole-frame FWHM (measured). The chart shows ten ~35-minute bins, each width divided by its own median over bins, because the two estimators have different scales (center median about 1.8 px Gaussian FWHM against about 2.9 px for the whole-frame estimator).
Re-scoring a night-relative flag (FWHM above 1.25× the night median) on a 300-frame sample: the whole-frame rule flags 24 of 66 fast frames (rate above 0.01°/s, 36″/s) and 9 of 234 slower ones; on center stars it flags 0 of each, and the count of frames graded "degraded" drops from 78 to 55 (all 23 changes are fast frames). The within-night correlation of width with airmass is −0.46 on the whole frame, the wrong sign for seeing (stars wider as airmass falls), and −0.17 on center stars. A second high-crossing night (NGC 7000 on the following night, when it crossed at 83°) repeats the pattern: whole-frame width against rate r 0.74, center stars 0.01. On center-star width, the strongest within-night correlation with a weather-type variable on those two nights is |r| 0.30 (sensor temperature), and a leave-one-night-out ridge fit on weather over five nights gives R² −0.02, so weather still doesn't predict seeing (all exploratory: the same nights the original claims used).
If the smear is just geometry, software can model it: instead of fitting each star with a round blob, fit a round blob dragged along the arc the frame's rotation predicts. I tried that on every star of the night, and on a second target that barely rotated, as a check that it does no harm.
Position model: four color planes sharing one center, a pixel-integrated Gaussian convolved with a tangential arc of length 0.9 |ω| T r about a per-frame turning point (fitted from the moments where the corner arc is at least 3 px, median 329 px from the sensor center; the sensor center otherwise), against the same code with the arc switched off. Per-frame precision of G 11–12 stars against Gaia, on M 33 frames held back from tuning: 0.141 → 0.116 px, paired difference −0.025 [−0.033, −0.017] (95 % interval); on all frames with a corner arc of 4 px or more, tuning frames included, 0.180 → 0.130 (−0.050 [−0.056, −0.043]) (measured). I had predicted −0.004 to −0.012, so the gain was two to three times larger than expected. The night-average floor didn't move (−2 mas [−16, +9]). On M 31 (arcs below 1.7 px) arc and no-arc agree to 0.1 mpx. On three of the fastest frames, the arc model lowers the corner χ² per pixel from 3.70–4.02 to 1.90–2.15; on three slow frames it changes nothing (measured).
Photometry: a round Gaussian's flux misses 20–25 % more light at the corners than at the center on still frames too (the corner PSF has fatter wings), so I rejected Gaussian PSF fluxes. An aperture of radius 1.0× the frame FWHM swept along the arc instead keeps corner/center flux at 0.983 [0.971, 0.994] for corner arcs of 8–13.5 px, against 0.776 for the round aperture; absolute accuracy against Gaia low-resolution spectra improves by 14 mmag [−19, −9]. Relative precision does not improve (+8 mmag [−1.5, +14.7]), because the swept aperture holds 2–4 times more sky pixels. The edge-versus-center bias falls from +97 to +41 mmag [29, 56] but is not resolved. Smear was about 60 % of it (all measured; predictions written before each run).
I also looked at three other targets from the same and the next night: M 16, M 31 and NGC 7000. None of them came as close to the zenith as M 33 did, so they turned more slowly and their corner arcs stayed short, at most 1.7 to 5.5 pixels (measured). That is too short to measure the stretch well, so these checks are inconclusive: they don't contradict the result, but they don't confirm it either. None of them showed a clear corner stretch pattern without fast turning, though at these small sizes the measurements are noisy (measured).
Cross-targets, same method (40–61 frames each). Expectation written before the run: M 16 (low, slow, high airmass) should show no r² tangential term. Slopes of kt against kpred are noise-dominated off M 33: the formula-rate prediction never exceeds 0.7 px² (2.5 px² from the noisier roll rate on NGC 7000). M 16's slope against the formula rate is 9.4 ± 3.1, not the 1 that smear predicts, over a predicted range under 0.2 px²; with its partial correlation with ω² at 0.01 I read it as noise rather than a signal (inferred), but it isn't a clean null either. Off M 33 the roll series is noise-dominated (1.7–6.5 px rms at the corner after a 15-minute spline), so the formula rate is the cleaner predictor there. I count these as inconclusive, not as confirmations.
If stars in the corners look stretched around the frame center while the middle looks sharp, and your target is passing high, it's field rotation, not your focus, the air or a mount fault. Check the stars in the middle before you refocus or blame the seeing (inferred from this night).
At my fastest turning a 10-second frame gave a corner arc of about 12.6 pixels (worked out from the measured turning rate; a direct fit of the arc reads about 10 % shorter). The arc is proportional to exposure, so a 20-second frame would give about 25 pixels and a 30-second one about 38 (inferred from the geometry). For targets that cross high, keep frames short.
The turning rate climbs steeply as a target nears the zenith. M 33 at 83° turned at up to 118″/s. M 16 and M 31, which stayed below 60°, turned at 21″/s or less with corner arcs under 2.3 pixels. NGC 7000, up to 75° on the first night, turned at 26″/s by the textbook formula and up to 51″/s by a noisier estimate from the frames themselves, with corner arcs of 5.5 pixels at most (measured on my targets). An hour around a near-zenith crossing is when it bites.
A quality filter that drops frames with fat stars will throw out good frames near the meridian, because the fat stars are only in the corners. If your software can, judge sharpness on stars near the center (exploratory).
My base was slightly tilted. The fastest turning came about 20 minutes before the highest point, and the textbook formula for a level mount read about 15 % low (measured; the tilt as the cause is inferred). Equatorial mode, with the mount tipped so its axis points at the celestial pole, has no field rotation at all (inferred from the geometry).
Field rotation isn't a Seestar flaw. It is the geometry of every alt-azimuth mount that doesn't turn its camera, from phone-sized smart telescopes to large Dobsonians. The Seestar's short default frames keep the arcs small for most of the night: on this night, two thirds of the frames, all those more than about 85 minutes before or 35 minutes after the highest point, had corner arcs under 2 pixels (measured). The worst case needs a target crossing within a few degrees of the zenith, and the S30 Pro's equatorial mode, which I've used on another night, avoids it when it is polar-aligned (inferred from the geometry). The tilt that made my rates differ from the formula was my setup, not the telescope's (inferred).
An earlier look had already shown the corner stretch rising and falling with the turning rate, so rotation was my main suspect going in. Before running this test I wrote down what I expected: that rotation would take essentially all of the bump, that the air would be under 1 %, that the mount's drift would be tiny, and that the low target M 16 would show nothing. The geometry of the arc and the 10-second exposure were fixed from the start. How I split the night into "near the top" and "baseline" for the shares was chosen during the analysis, not before. Everything else on this page was measured, except the air's share, which I computed rather than fitted, and the sketch, which is drawn larger than life.
Fixed in advance: Gaia DR3 positions as the reference; 3.674″/px and T = 10 s; the top-hat arc prediction (ωTr)²/12; written expectations before the run (rotation takes essentially all of the peak; chromatic refraction < 1 % of it, with the wrong time dependence; no r² tangential pattern from flexure; drive < 0.1 px²; none on M 16; per-plane arc-scale refits near 1.0, which failed at 0.86–0.92); for the arc models, the method and numeric predictions before any fit; for the width re-check, the center-star width definition and the flag thresholds before any center-star number. Not fixed in advance: the budget's peak and baseline windows and its regression form. Not blind: this test followed an earlier look that had already found the corner residual tracking ω² (r 0.79), so rotation was the leading hypothesis before the run. Measured: everything else; the atmosphere share is a computed bound, not a fit.